Списки
Список — упорядоченная изменяемая коллекция произвольных объектов:
numbers = [1, 2, 3]mixed = [1, "a", 3.5, [1, 2]]empty = []Доступ и срезы
Индексы и срезы работают так же, как у строк:
a = [10, 20, 30, 40, 50]print(a[0])print(a[-1])print(a[1:3])print(a[::-1])a[0] = 99a[1:3] = [0, 0, 0]print(a)Методы списков
a = [3, 1, 2]a.append(4)a.extend([5, 6])a.insert(0, 100)a.remove(100)last = a.pop()first = a.pop(0)print(a.index(2))print(a.count(1))a.sort()a.sort(reverse=True)a.reverse()a.clear()sort изменяет список на месте. Для получения нового отсортированного списка используйте функцию sorted:
data = [3, 1, 2]print(sorted(data))print(sorted(data, key=lambda x: -x))print(data)Полезные функции
a = [4, 2, 8]print(len(a))print(min(a))print(max(a))print(sum(a))print(any(x > 5 for x in a))print(all(x > 1 for x in a))Копирование
a = [1, 2, [3, 4]]b = ac = a.copy()import copyd = copy.deepcopy(a)b — та же самая коллекция, c — поверхностная копия (вложенный список общий), d — полная независимая копия.
Списковые включения
squares = [x ** 2 for x in range(10)]even = [x for x in range(20) if x % 2 == 0]pairs = [(x, y) for x in range(3) for y in range(3)]Кортежи
Кортеж — упорядоченная неизменяемая коллекция:
point = (1, 2)single = (1,)empty = ()Для одноэлементного кортежа запятая обязательна. Кортежи быстрее и компактнее списков, подходят как ключи словарей и для данных, которые не должны меняться.
Распаковка
x, y = (1, 2)a, *rest = [1, 2, 3, 4]first, *middle, last = [1, 2, 3, 4, 5]print(rest)print(middle)Результат: [2, 3, 4] и [2, 3, 4].
Именованные кортежи
from collections import namedtuplePoint = namedtuple("Point", ["x", "y"])p = Point(3, 4)print(p.x, p.y)Задания
- Удалите из списка дубликаты, сохранив порядок элементов.
- Поменяйте местами первый и последний элементы списка с помощью распаковки.
- Сгенерируйте список квадратов нечётных чисел до 50.
