Списки
list — это упорядоченный набор значений. Его можно менять. Это главная структура для колонки данных или набора строк.
Список пишут в квадратных скобках: [a, b, c].
Создание и доступ
Заголовок раздела «Создание и доступ»channels = ["web", "app", "email"]print(channels, len(channels))print(channels[0], channels[-1])Ответ:
['web', 'app', 'email'] 3web email- Индексы идут с
0. Первый элемент:[0]. [-1]— последний элемент.[-2]— предпоследний.len(x)— число элементов.- Выход за границу даёт
IndexError.
Изменение списка
Заголовок раздела «Изменение списка»channels.append("ads") # в конецchannels.insert(1, "push") # на позицию 1print(channels)channels[0] = "site" # заменитьprint(channels)last = channels.pop() # забрать последнийprint(last, channels)channels.remove("push") # удалить по значениюprint(channels)del channels[0] # удалить по индексуprint(channels)Ответ:
['web', 'push', 'app', 'email', 'ads']['site', 'push', 'app', 'email', 'ads']ads ['site', 'push', 'app', 'email']['site', 'app', 'email']['app', 'email']| Метод | Что делает |
|---|---|
append(x) | Добавляет в конец |
insert(i, x) | Вставляет на позицию i |
pop() / pop(i) | Удаляет и возвращает элемент |
remove(x) | Удаляет первое значение x |
del a[i] | Удаляет по индексу |
Полезные операции
Заголовок раздела «Полезные операции»amounts = [30, 10, 20]print(sum(amounts), min(amounts), max(amounts), len(amounts))print(sorted(amounts), amounts)amounts.sort(reverse=True)print(amounts)print("app" in channels, "tv" in channels)print([1, 2] + [3], [0] * 3)print(channels.index("email"), ["a", "b", "a"].count("a"))print(", ".join(channels))Ответ:
60 10 30 3[10, 20, 30] [30, 10, 20][30, 20, 10]True False[1, 2, 3] [0, 0, 0]1 2app, emailsorted(x)возвращает новый список. Старый не меняется.x.sort()сортирует на месте и возвращаетNone.inпроверяет, есть ли значение в списке.", ".join(x)склеивает список строк в одну строку через", ".
Копирование
Заголовок раздела «Копирование»a = [1, 2]b = ab.append(3)print(a)c = a.copy()c.append(4)print(a, c)Ответ:
[1, 2, 3][1, 2, 3] [1, 2, 3, 4]Используйте a.copy(), чтобы получить копию. Ещё есть срез a[:], о нём в следующем уроке.
Список списков
Заголовок раздела «Список списков»Таблица в простом виде — это список строк.
rows = [[1001, "anna", 49.9], [1002, "bob", 15.0]]print(rows[1][1])Ответ:
bobПервый индекс — строка. Второй — колонка. Позже строки будут словарями (урок про словари).
Где это в работе
Заголовок раздела «Где это в работе»- Колонка таблицы или список значений из API — это
list. - Строка CSV через
split(",")превращается в список полей. - Список id для фильтра:
WHERE id IN (...). - Список строк-файлов для обработки в цикле.
Практика
Заголовок раздела «Практика»Задание 1
Заголовок раздела «Задание 1»Создайте список users с именами anna, bob, carl. Добавьте dina в конец. Выведите список и его длину.
Проверка: ['anna', 'bob', 'carl', 'dina'] 4
Решение
users = ["anna", "bob", "carl"]users.append("dina")print(users, len(users))Задание 2
Заголовок раздела «Задание 2»Суммы заказов: [49.9, 15.0, 120.0, 35.5]. Выведите сумму, максимум и среднее (округлите до 2 знаков).
Проверка: 220.4 120.0 55.1
Решение
amounts = [49.9, 15.0, 120.0, 35.5]print(sum(amounts), max(amounts), round(sum(amounts) / len(amounts), 2))Задание 3
Заголовок раздела «Задание 3»Уберите bob из списка users из задания 1.
Проверка: ['anna', 'carl', 'dina']
Решение
users.remove("bob")print(users)Задание 4
Заголовок раздела «Задание 4»Выведите суммы из задания 2 по убыванию. Исходный список должен остаться как был.
Проверка:
[120.0, 49.9, 35.5, 15.0][49.9, 15.0, 120.0, 35.5]Решение
print(sorted(amounts, reverse=True))print(amounts)Задание 5
Заголовок раздела «Задание 5»Строка CSV: "1001,anna,49.9,web". Разрежьте её на поля. Выведите список, потом имя и сумму как число.
Проверка:
['1001', 'anna', '49.9', 'web']anna 49.9Решение
line = "1001,anna,49.9,web"parts = line.split(",")print(parts)print(parts[1], float(parts[2]))Задание 6
Заголовок раздела «Задание 6»Склейте список ["a@x.com", "b@y.com"] в одну строку через запятую и пробел.
Проверка: a@x.com, b@y.com
Решение
emails = ["a@x.com", "b@y.com"]print(", ".join(emails))Что запомнить
Заголовок раздела «Что запомнить»listхранит значения по порядку. Индекс начинается с0.append,insert,pop,removeменяют список на месте.sorted()возвращает новый список..sort()меняет старый.b = aне копирует. Для копии пишитеa.copy()."x".split(",")и",".join(list)нужны почти в каждом скрипте.
Дальше: Python Crash Course, глава 3.
Следующий урок: Цикл for и срезы.