Работа с коллекциями

3. Работа с коллекциями #

Коллекции в Python — это структуры данных для хранения и обработки групп элементов. Они включают списки, кортежи, множества и словари. Рассмотрим каждую из них.


3.1. Списки #

Списки — упорядоченные изменяемые коллекции элементов любого типа.
Они позволяют добавлять, удалять и изменять элементы.

Создание списка #

# Пустой список
my_list = []

# Список с элементами
my_list = [1, 2, 3, "Python", True]

Операции со списками #

my_list = [1, 2, 3]

# Добавление элемента
my_list.append(4)

# Вставка элемента по индексу
my_list.insert(1, "inserted")

# Удаление элемента
my_list.remove(2)  # Удаляет первый найденный элемент "2"

# Удаление по индексу
removed = my_list.pop(0)  # Удаляет элемент с индексом 0

# Поиск индекса элемента
index = my_list.index(3)

# Проверка наличия элемента
print(3 in my_list)  # True

Срезы списка #

my_list = [0, 1, 2, 3, 4, 5]

# Срез с начала до 3 (не включая 3)
print(my_list[:3])  # [0, 1, 2]

# Срез с 2 до конца
print(my_list[2:])  # [2, 3, 4, 5]

# Шаг 2
print(my_list[::2])  # [0, 2, 4]

3.2. Кортежи #

Кортежи — упорядоченные неизменяемые коллекции.

Создание кортежей #

# Пустой кортеж
my_tuple = ()

# Кортеж с элементами
my_tuple = (1, 2, 3, "Python")

# Одноэлементный кортеж
single_element = (42,)  # Запятая обязательна

Использование кортежей #

  • Неизменяемость: элементы кортежа нельзя добавлять, удалять или изменять.
  • Быстродействие: кортежи работают быстрее, чем списки.
  • Упаковка и распаковка:
a, b, c = (1, 2, 3)  # Распаковка
my_tuple = a, b, c  # Упаковка

3.3. Множества #

Множества — неупорядоченные коллекции уникальных элементов.

Создание множества #

# Пустое множество
my_set = set()

# Множество с элементами
my_set = {1, 2, 3, 4}

Операции с множествами #

a = {1, 2, 3}
b = {3, 4, 5}

# Объединение
print(a | b)  # {1, 2, 3, 4, 5}

# Пересечение
print(a & b)  # {3}

# Разность
print(a - b)  # {1, 2}

# Симметрическая разность
print(a ^ b)  # {1, 2, 4, 5}

Изменение множества #

a.add(6)          # Добавить элемент
a.remove(3)       # Удалить элемент (ошибка, если его нет)
a.discard(10)     # Удалить элемент (без ошибки)
a.clear()         # Очистить множество

3.4. Словари #

Словари — неупорядоченные коллекции пар “ключ-значение”.

Создание словаря #

# Пустой словарь
my_dict = {}

# Словарь с элементами
my_dict = {"name": "Alice", "age": 25}

Операции со словарями #

# Добавление или изменение элемента
my_dict["city"] = "New York"

# Получение значения
print(my_dict["name"])  # Alice

# Удаление элемента
del my_dict["age"]

# Получение всех ключей, значений или пар
print(my_dict.keys())    # dict_keys(['name', 'city'])
print(my_dict.values())  # dict_values(['Alice', 'New York'])
print(my_dict.items())   # dict_items([('name', 'Alice'), ('city', 'New York')])

Методы словарей #

# Получение значения с дефолтным значением
print(my_dict.get("age", "Not specified"))

# Удаление и возврат значения
value = my_dict.pop("city")

# Объединение словарей
my_dict.update({"country": "USA"})

3.5. Генераторы списков, множеств и словарей #

Генераторы позволяют быстро создавать коллекции с помощью одной строки.

Генераторы списков #

# Квадраты чисел от 0 до 9
squares = [x**2 for x in range(10)]
print(squares)  # [0, 1, 4, 9, ..., 81]

# Фильтрация
even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers)  # [0, 2, 4, 6, 8]

Генераторы множеств #

unique_squares = {x**2 for x in range(5)}
print(unique_squares)  # {0, 1, 4, 9, 16}

Генераторы словарей #

# Ключи — числа, значения — их квадраты
squares_dict = {x: x**2 for x in range(5)}
print(squares_dict)  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

Генераторы позволяют писать компактный и читаемый код, особенно для преобразования данных.