Какие основные структуры данных доступны в Python?

Ответ

В Python основные встроенные структуры данных и структуры из модуля collections включают:

  1. Списки (list): Изменяемые, упорядоченные коллекции элементов. Используются для хранения последовательностей, где важен порядок и возможность изменения.

    my_list = [1, 2, 'three']
  2. Кортежи (tuple): Неизменяемые, упорядоченные коллекции. Применяются для хранения фиксированных наборов данных, которые не должны меняться, обеспечивая их целостность.

    my_tuple = (1, 2, 'three')
  3. Множества (set): Изменяемые, неупорядоченные коллекции уникальных элементов. Идеальны для операций с множествами (объединение, пересечение, разность) и быстрого поиска уникальности.

    my_set = {1, 2, 3}
  4. Словари (dict): Изменяемые коллекции пар ключ-значение. Используются для быстрого доступа к данным по уникальному ключу, обеспечивая эффективное сопоставление.

    my_dict = {'a': 1, 'b': 2}
  5. Строки (str): Неизменяемые последовательности символов. Основа для работы с текстовыми данными, поддерживают множество операций для их обработки.

    my_str = "Hello"
  6. Массивы (array.array): Более эффективные по памяти списки для хранения однотипных числовых данных. Полезны для больших объемов чисел, когда важна производительность и экономия памяти.

    from array import array
    my_array = array('i', [1, 2, 3]) # 'i' для signed int
  7. Двусторонние очереди (collections.deque): Очереди, поддерживающие эффективное добавление и удаление элементов с обоих концов (O(1)). Применяются для реализации очередей, стеков и других сценариев, где требуется быстрая работа с обоими концами коллекции.

    from collections import deque
    queue = deque([1, 2, 3])
  8. Именованные кортежи (collections.namedtuple): Кортежи с именованными полями, улучшающие читаемость кода. Позволяют обращаться к элементам по имени, как к атрибутам объекта, при этом сохраняя легковесность кортежей.

    from collections import namedtuple
    Point = namedtuple('Point', ['x', 'y'])
    p = Point(10, 20)
    # print(p.x) # 10

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