Какие знаешь коллекции в Python

«Какие знаешь коллекции в Python» — вопрос из категории Python, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Python есть несколько встроенных типов коллекций, которые можно разделить по признакам изменяемости и упорядоченности.

Основные встроенные коллекции:

  • list (список): Упорядоченная, изменяемая коллекция.

    fruits = ['apple', 'banana', 'cherry']
    fruits.append('orange')
  • tuple (кортеж): Упорядоченная, неизменяемая коллекция.

    coordinates = (10, 20)
    # coordinates[0] = 5  # Вызовет TypeError
  • dict (словарь): Неупорядоченная (до Python 3.7), изменяемая коллекция пар ключ-значение. Ключи должны быть хешируемыми.

    person = {'name': 'Alice', 'age': 30}
    person['city'] = 'London'
  • set (множество): Неупорядоченная коллекция уникальных, хешируемых элементов. Изменяемое.

    unique_numbers = {1, 2, 3, 3}  # {1, 2, 3}
    unique_numbers.add(4)
  • frozenset (неизменяемое множество): Неизменяемый аналог set.

Специализированные коллекции из модуля collections:

  • namedtuple: Кортеж с именованными полями для доступа по атрибутам.
  • deque: Двусторонняя очередь для быстрых операций добавления/удаления с обоих концов.
  • Counter: Словарь-подсчётчик для хешируемых объектов.
  • defaultdict: Словарь, вызывающий фабричную функцию для предоставления значений по умолчанию для отсутствующих ключей.
  • OrderedDict: Словарь, который запоминает порядок вставки ключей (в Python 3.7+ обычный dict также сохраняет порядок).