Из документации Python:
«Изменчивость объекта определяется его типом; например, числа, строки и кортежи являются неизменяемыми, а словари и списки — изменяемыми».
При попытке выполнить операцию присваивания 𝚗𝚊𝚖𝚎[𝟶] = '𝙿' интерпретатор выдаст ошибку:
`𝚃𝚢𝚙𝚎𝙴𝚛𝚛𝚘𝚛: '𝚜𝚝𝚛' 𝚘𝚋𝚓𝚎𝚌𝚝 𝚍𝚘𝚎𝚜 𝚗𝚘𝚝 𝚜𝚞𝚙𝚙𝚘𝚛𝚝 𝚒𝚝𝚎𝚖 𝚊𝚜𝚜𝚒𝚐𝚗𝚖𝚎𝚗𝚝`
Для изменения строки необходимо создать новую строку. Существует несколько способов:
В данном случае правильным решением было бы:
𝚗𝚊𝚖𝚎 = '𝙿' + 𝚗𝚊𝚖𝚎[𝟷:]
𝚙𝚛𝚒𝚗𝚝(𝚗𝚊𝚖𝚎) # Выведет: 𝙿𝚎𝚗𝚗𝚢
Фундаментальное свойство строк в Python — их неизменяемость, которая обеспечивает безопасность данных и оптимизацию памяти.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
❤1
В данном случае, 𝚕𝚎𝚝𝚝𝚎𝚛𝚜 = '𝚊𝚋𝚌𝚍𝚎𝚏𝚐𝚑𝙸𝚓𝚔𝚕𝚖𝚗𝚘𝚙𝚚𝚛𝚜𝚝𝚞𝚟𝚠𝚡𝚢𝚣' — строка длиной 𝟸𝟼 символов. 𝚕𝚎𝚝𝚝𝚎𝚛𝚜[−𝟹:] — срез с отрицательным индексом от −𝟹 до конца строки.
Отрицательный индекс −𝟹 означает третий символ с конца строки. Для строки '𝚊𝚋𝚌𝚍𝚎𝚏𝚐𝚑𝙸𝚓𝚔𝚕𝚖𝚗𝚘𝚙𝚚𝚛𝚜𝚝𝚞𝚟𝚠𝚡𝚢𝚣' это символ '𝚡':
Срез 𝚕𝚎𝚝𝚝𝚎𝚛𝚜[−𝟹:] берет все символы начиная с позиции −𝟹 (включительно) до конца строки, то есть последние три символа: '𝚡𝚢𝚣'.
Из
«Некоторые последовательности, включая встроенные, интерпретируют отрицательные индексы, добавляя длину последовательности. Например, `𝚊[−𝟸]` эквивалентно `𝚊[𝚗−𝟸]`, то есть обращается ко второму с конца элементу последовательности `𝚊` длиной `𝚗`. Замечание, сделанное выше об отрицательных индексах, также относится и к отрицательным границам срезов».
При использовании срезов с отрицательными индексами удобно извлекать элементы с конца последовательности, не зная точно её длину.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
🧩 Что выведет код?
Anonymous Quiz
73%
4, 4, 1
1%
[1, 2, 3, 4, len, max, min]
4%
[len, '2max', '3min', 4]
22%
Error
❤1
Пошагово:
− 𝚏𝚞𝚗𝚌(𝚕𝚜𝚝) для 𝚏𝚞𝚗𝚌 = 𝚕𝚎𝚗 возвращает 𝚕𝚎𝚗(𝚕𝚜𝚝) = 𝟺 (длина списка из 𝟺 элементов)
− 𝚏𝚞𝚗𝚌(𝚕𝚜𝚝) для 𝚏𝚞𝚗𝚌 = 𝚖𝚊𝚡 возвращает 𝚖𝚊𝚡(𝚕𝚜𝚝) = 𝟺 (максимальный элемент)
− 𝚏𝚞𝚗𝚌(𝚕𝚜𝚝) для 𝚏𝚞𝚗𝚌 = 𝚖𝚒𝚗 возвращает 𝚖𝚒𝚗(𝚕𝚜𝚝) = 𝟷 (минимальный элемент)
Python позволяет использовать функции как объекты первого класса, что означает, что функции можно хранить в переменных, передавать в качестве аргументов и возвращать из других функций.
Из документации Python:
«Возвращает число элементов в объекте. Аргументом может быть последовательность (например, строка, байты, кортеж, список или диапазон) или коллекция (например, словарь, множество или замороженное множество)».
«Возвращает наибольший элемент в итерируемом объекте или наибольший из двух и более аргументов».
«Возвращает наименьший элемент в итерируемом объекте или наименьший из двух и более аргументов».
Таким образом, код выполняется без ошибок и выводит на экран по одному значению на каждой итерации цикла:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Пошагово:
Таким образом, извлекаются символы на позициях:
Результат: '𝚊𝚑𝚘𝚟'
𝙲интаксис среза определяется следующим образом:
𝚙𝚛𝚘𝚙𝚎𝚛_𝚜𝚕𝚒𝚌𝚎 ::= [𝚕𝚘𝚠𝚎𝚛_𝚋𝚘𝚞𝚗𝚍] ":" [𝚞𝚙𝚙𝚎𝚛_𝚋𝚘𝚞𝚗𝚍] [ ":" [𝚜𝚝𝚛𝚒𝚍𝚎] ]
Параметр 𝚜𝚝𝚛𝚒𝚍𝚎 определяет шаг, с которым выбираются элементы последовательности. Если 𝚜𝚝𝚛𝚒𝚍𝚎 положителен, элементы выбираются слева направо; если 𝚜𝚝𝚛𝚒𝚍𝚎 больше 𝟷, между выбираемыми элементами будут пропущены (𝚜𝚝𝚛𝚒𝚍𝚎 − 𝟷) элементов.
Если присутствует 𝚜𝚝𝚛𝚒𝚍𝚎, то первая индексная граница по умолчанию равна 𝙽𝚘𝚗𝚎, иначе 𝟶. Вторая индексная граница по умолчанию равна 𝙽𝚘𝚗𝚎. Если 𝚜𝚝𝚛𝚒𝚍𝚎 отрицателен, первая индексная граница по умолчанию равна 𝙽𝚘𝚗𝚎, иначе 𝚕𝚎𝚗(𝚜) − 𝟷, а вторая индексная граница по умолчанию равна −(𝚕𝚎𝚗(𝚜) + 𝟷).»
В данном случае с положительным шагом 𝟽 и отсутствием явных границ 𝚜𝚝𝚊𝚛𝚝 и 𝚜𝚝𝚘𝚙, по умолчанию используются значения 𝟶 и 𝚕𝚎𝚗(𝚕𝚎𝚝𝚝𝚎𝚛𝚜) соответственно, что приводит к выбору каждого 𝟽−го символа начиная с позиции 𝟶.
Please open Telegram to view this post
VIEW IN TELEGRAM