Перейти к основному содержимому

Строки, списки и словари

Родителям и детям
Откуда материал

Глава 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-строкой.


Связанные материалы