Пошагово:
Таким образом, извлекаются символы на позициях:
Результат: '𝚊𝚑𝚘𝚟'
𝙲интаксис среза определяется следующим образом:
𝚙𝚛𝚘𝚙𝚎𝚛_𝚜𝚕𝚒𝚌𝚎 ::= [𝚕𝚘𝚠𝚎𝚛_𝚋𝚘𝚞𝚗𝚍] ":" [𝚞𝚙𝚙𝚎𝚛_𝚋𝚘𝚞𝚗𝚍] [ ":" [𝚜𝚝𝚛𝚒𝚍𝚎] ]
Параметр 𝚜𝚝𝚛𝚒𝚍𝚎 определяет шаг, с которым выбираются элементы последовательности. Если 𝚜𝚝𝚛𝚒𝚍𝚎 положителен, элементы выбираются слева направо; если 𝚜𝚝𝚛𝚒𝚍𝚎 больше 𝟷, между выбираемыми элементами будут пропущены (𝚜𝚝𝚛𝚒𝚍𝚎 − 𝟷) элементов.
Если присутствует 𝚜𝚝𝚛𝚒𝚍𝚎, то первая индексная граница по умолчанию равна 𝙽𝚘𝚗𝚎, иначе 𝟶. Вторая индексная граница по умолчанию равна 𝙽𝚘𝚗𝚎. Если 𝚜𝚝𝚛𝚒𝚍𝚎 отрицателен, первая индексная граница по умолчанию равна 𝙽𝚘𝚗𝚎, иначе 𝚕𝚎𝚗(𝚜) − 𝟷, а вторая индексная граница по умолчанию равна −(𝚕𝚎𝚗(𝚜) + 𝟷).»
В данном случае с положительным шагом 𝟽 и отсутствием явных границ 𝚜𝚝𝚊𝚛𝚝 и 𝚜𝚝𝚘𝚙, по умолчанию используются значения 𝟶 и 𝚕𝚎𝚗(𝚕𝚎𝚝𝚝𝚎𝚛𝚜) соответственно, что приводит к выбору каждого 𝟽−го символа начиная с позиции 𝟶.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Короче, в ШОРТКАТ ищут менторов — Senior Python-разработчиков
ШОРТКАТ — менторская платформа от команды разработчиков из бигтеха. Ребята помогают найти крутую работу, апнуть грейд или сменить стек.
Что надо будет делать: проводить тестовые собесы → оценивать грейд → помогать разбираться в сложных темах.
Что взамен:
— От 40К за 5-7 часов работы в неделю
— Доступ к обучению и комьюнити сильных менторов из Яндекс, Uber, VK, Сбер
— Возможность выступать на эфирах, куда уже приходят 500+ джавистов, и стать заметнее на рынке
Заполняй форму — с тобой свяжутся и расскажут все подробности
Это #партнёрский пост
ШОРТКАТ — менторская платформа от команды разработчиков из бигтеха. Ребята помогают найти крутую работу, апнуть грейд или сменить стек.
Что надо будет делать: проводить тестовые собесы → оценивать грейд → помогать разбираться в сложных темах.
Что взамен:
— От 40К за 5-7 часов работы в неделю
— Доступ к обучению и комьюнити сильных менторов из Яндекс, Uber, VK, Сбер
— Возможность выступать на эфирах, куда уже приходят 500+ джавистов, и стать заметнее на рынке
Заполняй форму — с тобой свяжутся и расскажут все подробности
Это #партнёрский пост
😁1
𝚜𝚝𝚛.𝚜𝚙𝚕𝚒𝚝(𝚜𝚎𝚙=𝙽𝚘𝚗𝚎, 𝚖𝚊𝚡𝚜𝚙𝚕𝚒𝚝=−𝟷)
«Возвращает список слов в строке, используя 𝚜𝚎𝚙 как разделитель строк. Если 𝚜𝚎𝚙 не указан или равен 𝙽𝚘𝚗𝚎, разделителем считается любая последовательность пробельных символов. Если разделителем является пробельный символ или 𝚜𝚎𝚙 равен 𝙽𝚘𝚗𝚎, результат не содержит пустых строк».
Строка 𝚝𝚊𝚜𝚔𝚜 содержит символы перевода строки между задачами: «𝚐𝚎𝚝_𝚐𝚕𝚘𝚟𝚎𝚜», «𝚐𝚎𝚝_𝚖𝚊𝚜𝚔», «𝚐𝚒𝚟𝚎_𝚌𝚊𝚝_𝚟𝚒𝚝𝚊𝚖𝚒𝚗𝚜». Вызов 𝚝𝚊𝚜𝚔𝚜.𝚜𝚙𝚕𝚒𝚝() использует поведение 𝚜𝚙𝚕𝚒𝚝 по умолчанию: разделение по последовательностям пробельных символов (включая перевод строки) с игнорированием пустых фрагментов.
Пошагово:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2
👍3
Пошагово:
𝚜𝚝𝚛.𝚛𝚎𝚙𝚕𝚊𝚌𝚎(𝚘𝚕𝚍, 𝚗𝚎𝚠[, 𝚌𝚘𝚞𝚗𝚝])
«Возвращает копию строки со всеми вхождениями подстроки 𝚘𝚕𝚍, замененными на 𝚗𝚎𝚠. Если указан необязательный аргумент 𝚌𝚘𝚞𝚗𝚝, заменяются только первые 𝚌𝚘𝚞𝚗𝚝 вхождений».
Метод возвращает новую строку, а не изменяет существующую, поскольку строки в Python являются неизменяемыми (𝚒𝚖𝚖𝚞𝚝𝚊𝚋𝚕𝚎) объектами. Для сохранения результата замены необходимо присвоить возвращаемое значение переменной:
𝚜𝚎𝚝𝚞𝚙 = 𝚜𝚎𝚝𝚞𝚙.𝚛𝚎𝚙𝚕𝚊𝚌𝚎('Утка', 'Сурок')
𝚙𝚛𝚒𝚗𝚝(𝚜𝚎𝚝𝚞𝚙) # Сурок входит в бар...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🕊1
Что выведет код?
Anonymous Quiz
52%
[[0, 1, 0], [0, 0, 0], [0, 0, 0]]
34%
[[0, 1, 0], [0, 1, 0], [0, 1, 0]]
9%
[[0, 0, 0], [1, 0, 0], [0, 0, 0]]
5%
Error
❤5💯1
Как правильно: создавать каждую строку заново, например с генератором списков:
𝚖𝚊𝚝𝚛𝚒𝚡 = [[𝟶 𝚏𝚘𝚛 _ 𝚒𝚗 𝚛𝚊𝚗𝚐𝚎(𝟹)] 𝚏𝚘𝚛 _ 𝚒𝚗 𝚛𝚊𝚗𝚐𝚎(𝟹)]
Теперь каждая строка независима, и изменение одной не затрагивает остальные.
Для копирования уже созданной матрицы используйте копирование по элементам, например 𝚕𝚒𝚜𝚝(𝚖𝚊𝚙(𝚕𝚒𝚜𝚝, 𝚖𝚊𝚝𝚛𝚒𝚡)) или 𝚍𝚎𝚎𝚙𝚌𝚘𝚙𝚢 из модуля 𝚌𝚘𝚙𝚢, если внутри есть вложенные структуры.
👍2❤1
Что выведет код? Перевод на новую строку и пробелы не учитываем, вопрос про списки.
Anonymous Quiz
56%
[1] [1, 1]
38%
[1] [1]
3%
[ ] [ ]
4%
[ ] [1]
❤1
В этом примере список 𝚡 создаётся при определении 𝚏𝚞𝚗, и каждый вызов 𝚏𝚞𝚗() добавляет в него единицу. Поэтому после первого вызова выводится [𝟷], а после второго уже [𝟷, 𝟷]. Такой эффект ловит многих: кажется, будто 𝚡 — новый пустой список при каждом вызове, но на деле это один и тот же, постоянно растущий список.
Чтобы избежать такого поведения, используйте 𝙽𝚘𝚗𝚎 как значение по умолчанию — тогда новый список создаётся при каждом вызове:
𝚍𝚎𝚏 𝚏𝚞𝚗(𝚡=𝙽𝚘𝚗𝚎):
𝚒𝚏 𝚡 𝚒𝚜 𝙽𝚘𝚗𝚎:
𝚡 = [ ]
𝚡.𝚊𝚙𝚙𝚎𝚗𝚍(𝟷)
𝚛𝚎𝚝𝚞𝚛𝚗 𝚡
Теперь каждый раз будет новый список: [𝟷] — поведение ожидаемое и безопасное для задач, где нужны независимые коллекции.
Эта особенность касается любых изменяемых типов: списков, словарей и даже пользовательских объектов. Полезно обратить на это внимание при проектировании функций‑инструментов и обработчиков.
✍4
Что выведет код в Python 3?
Anonymous Quiz
53%
['a', 'b', 'c'], 2
9%
['a', 'b', 'c'], 3
25%
['b', 'c'], 2
14%
Error
❤2👍1
Разбор по шагам:
Views — это не копии, а «живые» ссылки на словарь, экономящие память и время. В отличие от Python 2 (где 𝚍𝚒𝚌𝚝.𝚔𝚎𝚢𝚜() возвращал список-копию), в Python 3 представления всегда динамичны. Если бы код использовал 𝚕𝚒𝚜𝚝(𝚍.𝚔𝚎𝚢𝚜()) в начале, то 𝚘𝚕𝚍_𝚔𝚎𝚢𝚜 = 𝚕𝚒𝚜𝚝(𝚍.𝚔𝚎𝚢𝚜()), добавление 'c' не повлияло бы на 𝚘𝚕𝚍_𝚔𝚎𝚢𝚜 — оно осталось бы ['a', 'b'].
Please open Telegram to view this post
VIEW IN TELEGRAM
✍1