Глава 11 · Очень много информации!
Мини-проект — перестановка имени и фамилии
Собираем split(), распаковку и строки из главы 8 в одной короткой, но полезной программе — и подводим полные итоги главы.
Финальный мини-проект главы: разбить полное имя на части и собрать заново в другом порядке — «Фамилия Имя» вместо «Имя Фамилия», используя методы строк из главы 8 и списки из этой главы.
perestanovka_imeni.py
full_name = input("Введите имя и фамилию через пробел: ")
parts = full_name.split() # split() возвращает список
name, surname = parts # распаковка, как у кортежей
print(f"{surname} {name}")
split() возвращает список
Мы видели
.split() в главе 8, но не заостряли внимание на том, что результат — это именно list. Теперь, зная про списки, можно распаковывать его так же, как распаковывали кортежи в §11.13.★★★ Задача повышенной сложности
Три части имени
Обработайте случай с отчеством (три слова): «Имя Отчество Фамилия» → «Фамилия И.О.» с инициалами.
Практика: перестановка имени и фамилии
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Итоги главы
Итоговый инструментарий главы 11
Нужна пара «ключ → значение»?
→
dict
Нужны только уникальные значения, порядок не важен?
→
set
Нужен порядок, значения точно не изменятся?
→
tuple
Нужен порядок, и придётся менять содержимое?
→
list
Нужен неизменяемый набор уникальных значений?
→
frozenset
Нужны позиция и значение вместе при переборе?
→
enumerate(...)
Нужно перебрать несколько коллекций попарно?
→
zip(...)
Нужна новая коллекция, преобразованная из старой?
→
comprehension
Нужна независимая внешняя копия?
→
.copy() / list(...) / [:]
Нужна полностью независимая копия вложенных структур?
→
copy.deepcopy(...) — с осторожностью
Что мы узнали в этой главе
- Список (
list) — упорядоченная, изменяемая коллекция в[]: индексы, срезы, append/extend/insert, remove/pop/clear. - Кортеж (
tuple) — как список, но неизменяемый, в(): packing/unpacking, звёздочная распаковка, кортеж из одного элемента требует запятой. - Множество (
set) — уникальные значения без позиций, в{}(но{}без содержимого — это dict, а не set!): union/intersection/difference/symmetric_difference. - Словарь (
dict) — пары «ключ: значение», сохраняет порядок вставки, доступ по ключу, а не по позиции. b = aдля изменяемых объектов создаёт ВТОРОЕ ИМЯ того же объекта (aliasing), а не копию — для копии нужен.copy(), а для вложенных структур —copy.deepcopy().- Хешируемыми (и годными в качестве ключей словаря или элементов множества) бывают только неизменяемые типы: числа, строки, кортежи из хешируемых элементов, frozenset.
- Генератор списков
[выражение for элемент in коллекция]— компактная альтернатива циклу сappend(), но не замена циклу везде, где нужна более сложная логика. - Выбор структуры данных — это в первую очередь вопрос к задаче («нужен ли порядок?», «нужны ли уникальные значения?», «нужен ли ключ?»), а не вопрос синтаксиса.