Строки, списки и словари
Глава 3 книги Джейсона Бриггса "Python для детей" (2017). Базовые определения — в Типы данных и Программа на Python.
Python хранит не только числа. Текст, списки покупок, таблицы имён — это разные структуры данных. У каждой структуры свои правила хранения и доступа.
Ниже — примеры из самоучителя Бриггса с пояснениями терминов.
Строки (str)
Строка — последовательность символов в кавычках:
fred = "Почему у горилл большие ноздри? Потому что у них толстые пальцы!"
print(fred)
Допустимы 'одинарные' и "двойные" кавычки. Открывающая и закрывающая кавычка должны совпадать. Строку нельзя разорвать посередине без специального синтаксиса.
Многострочный текст
Три одинарные кавычки в начале и в конце:
fred = '''Что едят на полдник динозавры?
ТиРекс-кекс!'''
Кавычки внутри текста
Если внутри есть 'д'Артаньян', используйте тройные кавычки или экранирование \:
silly = '"Тут что-то не так", — подумал он.'
# или
silly = '\"Тут что-то не так\", — подумал он.'
SyntaxError означает, что Python "закрыл" строку раньше времени — проверьте кавычки.
Подстановка %s
Старый способ вставить значение в строку:
myscore = 1000
message = 'Мой счёт: %s очков'
print(message % myscore) # Мой счёт: 1000 очков
Несколько меток — значения в скобках в том же порядке:
nums = 'Что сказало число %s числу %s? Славный поясок!'
print(nums % (0, 8))
f-строки — современный вариант той же идеи:
myscore = 1000
print(f"Мой счёт: {myscore} очков")
Фигурные скобки {myscore} подставляют значение переменной.
Умножение строк
print(10 * 'a') # aaaaaaaaaa
spaces = ' ' * 25 # 25 пробелов для отступа
В книге так оформляют "письмо" с выровненным адресом — упражнение myletter.py.
Списки (list)
Список — упорядоченный набор элементов в квадратных скобках:
wizard_list = ['паучьи лапки', 'жабий палец', 'глаз тритона',
'крыло летучей мыши', 'жир слизня', 'перхоть змеи']
Строка 'лапки, палец, …' — один длинный текст. Список даёт доступ к каждому ингредиенту отдельно.
Индексы с нуля
print(wizard_list[2]) # глаз тритона — третий элемент
Индекс — номер элемента. Нумерация начинается с 0. Первый элемент — wizard_list[0].
Изменение и срезы
wizard_list[2] = 'язык улитки'
print(wizard_list[2:5]) # элементы с индекса 2 до 5 (5 не включается)
Срез [2:5] берёт элементы 2, 3 и 4.
Добавить и удалить
wizard_list.append('медвежий коготь')
del wizard_list[5]
append(x)— добавить элемент в конецdel list[i]— удалить элемент с индексомi
Сложение и повторение списков
list1 = [1, 2, 3, 4]
list2 = ['я', 'мечтаю', 'о', 'пломбире']
print(list1 + list2)
print([1, 2] * 3) # [1, 2, 1, 2, 1, 2]
Выражение list1 + 50 вызовет ошибку — Python не складывает список с числом. Нужно явно указать, что Вы хотите: list1 + [50] или [x + 50 for x in list1].
Кортежи (tuple)
Кортеж — упорядоченный набор в круглых скобках. После создания элементы не меняют:
fibs = (0, 1, 1, 2, 3)
print(fibs[3]) # 2
fibs[0] = 4 # TypeError!
Кортеж подходит для фиксированных наборов:
- координаты точки
(x, y) - дата рождения
- настройки по умолчанию
Словари (dict)
Словарь — пары ключ → значение в фигурных скобках:
favorite_sports = {
'Ральф Уильямс': 'Футбол',
'Ребекка Кларк': 'Нетбол',
'Фрэнк Бридж': 'Регби'
}
print(favorite_sports['Ребекка Кларк']) # Нетбол
Ключ — имя, по которому ищут значение. В списке пришлось бы перебирать все элементы. В словаре доступ прямой — по ключу.
Значения могут быть любыми:
- числа
- строки
- списки
- другие словари
участники = [
{'имя': 'Анна', 'возраст': 12},
{'имя': 'Борис', 'возраст': 13},
]
for человек in участники:
print(человек['имя'], '—', человек['возраст'], 'лет')
Цикл for перебирает список словарей — см. циклы.
Когда что использовать
| Структура | Скобки | Можно менять? | Типичное применение |
|---|---|---|---|
| Строка | ' ' или " " | Создают новую строку | Текст, сообщения |
| Список | [ ] | Да | Набор элементов по порядку |
| Кортеж | ( ) | Нет | Фиксированный набор |
| Словарь | { } | Да (по ключам) | Свойства объекта, "имя → значение" |
Мини-проекты
1. Колдовской список — повторите wizard_list: добавьте 3 ингредиента через append, удалите один через del, выведите срез [1:4].
2. Таблица друзей — словарь "имя → любимая игра"; спросите через input, добавьте новую пару.
3. Письмо с отступом — spaces = ' ' * 20 и строки адреса с %s или f-строкой.
Связанные материалы
- Игра "Прыг-скок" —
coords()возвращает список координат - Программа на Python — функции, файлы, turtle
- Python — работа с файлами
- Типы данных — обзор для начинающих