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}
Генераторы позволяют писать компактный и читаемый код, особенно для преобразования данных.