Вопрос 13 из 16

Основы Python

Как использовать встроенные коллекции (list, set, dictionary)?

Показать ответ

Короткий ответ

  • list: упорядоченная изменяемая коллекция
  • set: неупорядоченная коллекция уникальных элементов
  • dict: коллекция пар ключ-значение

Развернутый ответ

В Python есть три основных типа встроенных коллекций: списки (list), множества (set) и словари (dictionary). Вот как их эффективно использовать:


1. Списки (list)

Упорядоченные изменяемые коллекции с дубликатами элементов.

Основные операции:

# Создание
numbers = [1, 2, 3]
chars = list("abc")  # ['a', 'b', 'c']

# Добавление элементов
numbers.append(4)       # [1, 2, 3, 4]
numbers.insert(1, 1.5)  # [1, 1.5, 2, 3, 4]
numbers.extend([5, 6])  # [1, 1.5, 2, 3, 4, 5, 6]

# Удаление
numbers.pop()      # Удаляет последний элемент (6)
numbers.pop(0)     # Удаляет по индексу (1)
numbers.remove(3)  # Удаляет первое вхождение значения

# Срезы
subset = numbers[1:4]  # [1.5, 2, 4]
reversed_list = numbers[::-1]  # Разворот списка

# Сортировка
numbers.sort()  # Изменяет исходный список
sorted_numbers = sorted(numbers)  # Возвращает новый список

2. Множества (set)

Неупорядоченные изменяемые коллекции уникальных элементов (хешируемых объектов).

Основные операции:

# Создание
unique_numbers = {1, 2, 3}
letters = set("hello")  # {'h', 'e', 'l', 'o'}

# Добавление/удаление
unique_numbers.add(4)     # {1, 2, 3, 4}
unique_numbers.discard(2) # {1, 3, 4} (без ошибки если элемента нет)
unique_numbers.remove(3)  # {1, 4} (KeyError если элемента нет)

# Операции множеств
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}

# Проверка принадлежности
if 1 in unique_numbers:
    print("Элемент найден")

3. Словари (dict)

Неупорядоченные изменяемые коллекции пар ключ-значение с уникальными ключами.

Основные операции:

# Создание
person = {"name": "Alice", "age": 25}
colors = dict(red="#FF0000", green="#00FF00")

# Доступ и изменение
person["age"] = 26           # Изменение значения
person["city"] = "Berlin"    # Добавление новой пары
value = person.get("name")   # Безопасное получение (None если нет ключа)
value = person["name"]       # KeyError если ключа нет

# Удаление
age = person.pop("age")      # Удаляет и возвращает значение
del person["city"]           # Удаление без возврата значения

# Итерация
for key in person:           # По ключам
    print(key, person[key])

for key, value in person.items():  # По парам
    print(f"{key}: {value}")

# Словарные включения (dict comprehension)
squares = {x: x**2 for x in range(5)}  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

4. Полезные методы

Для списков:

  • index() — поиск индекса элемента
  • count() — подсчет вхождений
  • copy() — создание копии

Для множеств:

  • update() — добавление нескольких элементов
  • isdisjoint() — проверка на отсутствие общих элементов
  • issubset() — проверка на подмножество

Для словарей:

  • setdefault() — безопасное добавление
  • update() — объединение словарей
  • fromkeys() — создание словаря с общим значением

5. Особенности Python 3.9+

  • Объединение словарей оператором |:
dict1 = {"a": 1}
dict2 = {"b": 2}
combined = dict1 | dict2  # {'a': 1, 'b': 2}

Выбор коллекции зависит от задачи: списки — для упорядоченных данных, множества — для уникальности, словари — для связки ключ-значение.