👍3👎1
Из
𝚜𝚞𝚋𝚜𝚌𝚛𝚒𝚙𝚝𝚒𝚘𝚗 ::= 𝚙𝚛𝚒𝚖𝚊𝚛𝚢 "[" 𝚎𝚡𝚙𝚛𝚎𝚜𝚜𝚒𝚘𝚗_𝚕𝚒𝚜𝚝 "]"
При индексации список 𝚗𝚞𝚖𝚜[𝚒] возвращает 𝚒−й элемент последовательности. Индексы нумеруются с нуля. Это пришло из низкоуровневых языков вроде 𝙲. Там индекс массива — это фактически смещение (𝚘𝚏𝚏𝚜𝚎𝚝) от адреса начала массива в памяти. Первый элемент находится по адресу 𝚋𝚊𝚜𝚎_𝚊𝚍𝚍𝚛𝚎𝚜𝚜 + 𝟶, второй — 𝚋𝚊𝚜𝚎_𝚊𝚍𝚍𝚛𝚎𝚜𝚜 + 𝟷, и так далее. Поэтому индексация с нуля естественна на уровне работы с памятью.
− 𝚗𝚞𝚖𝚜[𝟶] возвращает первый элемент — 𝟷𝟶
− 𝚗𝚞𝚖𝚜[𝟷] возвращает второй элемент — 𝟸𝟶
− 𝚗𝚞𝚖𝚜[𝟸] возвращает третий элемент — 𝟹𝟶
В данном коде создается список из трех элементов: [𝟷𝟶, 𝟸𝟶, 𝟹𝟶]. При обращении 𝚗𝚞𝚖𝚜[𝟷] мы получаем элемент с индексом 𝟷, то есть второй элемент списка, который равен 𝟸𝟶.
👍3👎1
🔥5👍1👎1
Переменные:
− 𝚡 = 𝟽
− 𝚢 = 𝟻
Выражение: 𝚡 > 𝚢 𝚊𝚗𝚍 𝚢 < 𝟹
Вычисление по шагам:
𝟷. 𝚡 > 𝚢 → 𝟽 > 𝟻 → 𝚃𝚛𝚞𝚎
𝟸. 𝚢 < 𝟹 → 𝟻 < 𝟹 → 𝙵𝚊𝚕𝚜𝚎
𝟹. 𝚃𝚛𝚞𝚎 𝚊𝚗𝚍 𝙵𝚊𝚕𝚜𝚎 → 𝙵𝚊𝚕𝚜𝚎
Согласно документации, оператор 𝚊𝚗𝚍 возвращает:
В данном случае первый операнд (𝚃𝚛𝚞𝚎) истинен, но второй операнд (𝙵𝚊𝚕𝚜𝚎) ложен, поэтому оператор «𝚊𝚗𝚍» возвращает 𝙵𝚊𝚕𝚜𝚎.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3👎1
👍3👎1
При обращении к элементу словаря 𝚜𝚌𝚘𝚛𝚎𝚜['𝙰', '𝙱'] 𝙿𝚢𝚝𝚑𝚘𝚗 интерпретирует '𝙰', '𝙱' как кортеж ('𝙰', '𝙱'), а не как два отдельных ключа.
Согласно
𝚎𝚡𝚙𝚛𝚎𝚜𝚜𝚒𝚘𝚗_𝚕𝚒𝚜𝚝 ::= 𝚎𝚡𝚙𝚛𝚎𝚜𝚜𝚒𝚘𝚗 ("," 𝚎𝚡𝚙𝚛𝚎𝚜𝚜𝚒𝚘𝚗)∗ [","]
Таким образом, выражение 𝚜𝚌𝚘𝚛𝚎𝚜['𝙰', '𝙱'] эквивалентно 𝚜𝚌𝚘𝚛𝚎𝚜[('𝙰', '𝙱')].
В словаре 𝚜𝚌𝚘𝚛𝚎𝚜 есть только ключи '𝙰' и '𝙱', но нет ключа ('𝙰', '𝙱'). При попытке обращения к несуществующему ключу словарь генерирует исключение 𝙺𝚎𝚢𝙴𝚛𝚛𝚘𝚛.
Для получения нескольких значений из словаря нужно использовать отдельные обращения или методы словаря, например:
− 𝚜𝚌𝚘𝚛𝚎𝚜['𝙰'], 𝚜𝚌𝚘𝚛𝚎𝚜['𝙱']
− [𝚜𝚌𝚘𝚛𝚎𝚜[𝚔] 𝚏𝚘𝚛 𝚔 𝚒𝚗 ('𝙰', '𝙱')]
👍5❤1👎1
❤4👍1👎1
Согласно
𝚕𝚒𝚜𝚝_𝚍𝚒𝚜𝚙𝚕𝚊𝚢 ::= "[" [𝚜𝚝𝚊𝚛𝚛𝚎𝚍_𝚕𝚒𝚜𝚝 | 𝚌𝚘𝚖𝚙𝚛𝚎𝚑𝚎𝚗𝚜𝚒𝚘𝚗] "]"
𝚌𝚘𝚖𝚙𝚛𝚎𝚑𝚎𝚗𝚜𝚒𝚘𝚗 ::= 𝚎𝚡𝚙𝚛𝚎𝚜𝚜𝚒𝚘𝚗 𝚌𝚘𝚖𝚙_𝚏𝚘𝚛
𝚌𝚘𝚖𝚙_𝚏𝚘𝚛 ::= "𝚏𝚘𝚛" 𝚝𝚊𝚛𝚐𝚎𝚝_𝚕𝚒𝚜𝚝 "𝚒𝚗" 𝚘𝚛_𝚝𝚎𝚜𝚝 [𝚌𝚘𝚖𝚙_𝚒𝚝𝚎𝚛]
В данном коде создается новый список 𝚙𝚛𝚘𝚌𝚎𝚜𝚜𝚎𝚍 с помощью выражения [𝚡 ∗ 𝟸 𝚏𝚘𝚛 𝚡 𝚒𝚗 𝚍𝚊𝚝𝚊]. Это выражение:
Список 𝚍𝚊𝚝𝚊 содержит элементы [𝟷, 𝟸, 𝟹]. После применения с.в. получается 𝚙𝚛𝚘𝚌𝚎𝚜𝚜𝚎𝚍 = [𝟸, 𝟺, 𝟼].
Далее выполняется обращение к элементу списка по индексу: 𝚙𝚛𝚘𝚌𝚎𝚜𝚜𝚎𝚍[𝟸].Индексация в 𝙿𝚢𝚝𝚑𝚘𝚗 начинается с нуля. Это означает, что:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👎1
👍4👎1
Синтаксис «лямбды» (согласно
𝚕𝚊𝚖𝚋𝚍𝚊_𝚎𝚡𝚙𝚛 ::= "𝚕𝚊𝚖𝚋𝚍𝚊" [𝚙𝚊𝚛𝚊𝚖𝚎𝚝𝚎𝚛_𝚕𝚒𝚜𝚝] ":" 𝚎𝚡𝚙𝚛𝚎𝚜𝚜𝚒𝚘𝚗
В данном случае 𝚕𝚊𝚖𝚋𝚍𝚊−функция принимает два параметра: 𝚊 (обязательный) и 𝚋 (со значением по умолчанию 𝟻). При вызове 𝚊𝚍𝚍(𝟹) передается только один аргумент, который присваивается параметру 𝚊. Параметр 𝚋 использует значение по умолчанию, равное 𝟻.
Таким образом, выполняется операция: 𝟹 + 𝟻 = 𝟾.
👍5👎1
👍3👎1
«Переменная — это ссылка на объект в памяти».
Когда мы присваиваем переменной новое значение, переменная начинает ссылаться на другой объект.
В данном коде:
𝟷. Строка 𝟷: 𝚊 = 𝚃𝚛𝚞𝚎
Переменная 𝚊 ссылается на объект 𝚃𝚛𝚞𝚎 в памяти. Функция 𝚒𝚍() возвращает уникальный идентификатор объекта 𝚃𝚛𝚞𝚎.
𝟸. Строка 𝟹: 𝚊 = 𝙵𝚊𝚕𝚜𝚎
Переменная 𝚊 теперь ссылается на объект 𝙵𝚊𝚕𝚜𝚎 в памяти. Это совершенно другой объект, поэтому 𝚒𝚍() возвращает другой идентификатор.
Ключевой момент: 𝚃𝚛𝚞𝚎 и 𝙵𝚊𝚕𝚜𝚎 — это отдельные объекты в памяти. Когда мы изменяем значение переменной с 𝚃𝚛𝚞𝚎 на 𝙵𝚊𝚕𝚜𝚎, мы не изменяем сам объект 𝚃𝚛𝚞𝚎, а заставляем переменную 𝚊 ссылаться на другой объект — 𝙵𝚊𝚕𝚜𝚎.
Поэтому два вызова 𝚙𝚛𝚒𝚗𝚝(𝚒𝚍(𝚊)) покажут разные значения, так как переменная 𝚊 ссылается на разные объекты в памяти.
Это демонстрирует важную особенность: переменные не «содержат» значения, а являются ссылками на объекты. При изменении значения переменной меняется объект, на который она ссылается, а не содержимое самого объекта.
❤4👍2👎1
👍5👎2
Последовательность выполнения:
Из
«Операторы присваивания используются для (повторного) связывания имен со значениями и для изменения атрибутов или элементов изменяемых объектов»
При присваивании происходит связывание имени с объектом, а не копирование значения. Поэтому изменение значения одной переменной не влияет на другие переменные, которые ссылаются на тот же объект.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3👎1
🧩 Какой символ РАЗРЕШЕН в именах переменных?
Anonymous Quiz
3%
- (дефис)
1%
# (решетка)
81%
_ (нижнее подчеркивание)
15%
Все разрешаются
👍5👎1