Коллекции в Python. Часть первая
Большая шпаргалка по коллекциям в python.
Дисклеймер. На пиакбу нет редактора кода поэтому картинки. Поскольку это шпаргалка с примерами то в этом посте допустимо.
Статья вышла большая, количество иллюстраций превышает предел, поэтому я разделил ее на две части.
В Python коллекция — это объект, содержащий группу элементов и позволяющий с ними работать как с единым целым.
Коллекции обычно поддерживают:
- итерацию ( `for item in collection` )
- проверку вхождения ( `x in collection` )
- определение длины ( `len(collection)` )
- доступ по индексу или ключу (если упорядочены или ассоциативны)
> 💡 В Python нет строгого интерфейса «коллекция», но есть неформальные протоколы. Если объект поддерживает `__iter__`, `__len__`, `__contains__` — его можно считать коллекцией.
---
Что не является коллекцией
Следующие типы не считаются коллекциями, так как не содержат группы элементов:
- `int`, `float`, `bool` — скалярные значения
- `None` — отсутствие значения
- функции, модули, классы — это объекты, но не контейнеры данных (если только не содержат `__dict__`)
---
Основные встроенные коллекции
Доступны без импортов:
Расширенные коллекции из стандартной библиотеки
Другие коллекции и коллекционоподобные типы
Хотя не всегда называются «коллекциями» в бытовом смысле, эти типы тоже хранят или представляют группы данных.
1. `str` — строка
Неизменяемая упорядоченная коллекция символов.
2. `bytes`, `bytearray`
3. `range`
Ленивая упорядоченная последовательность чисел. Не хранит элементы в памяти.
4. `array.array`
Хранит однотипные числовые данные компактно (как в C).
5. Генераторы и итераторы
Не хранят данные — генерируют по запросу. Не поддерживают `len()` или индексацию.
6. `ChainMap` (из `collections`)
Объединяет несколько словарей в одну виртуальную коллекцию — поиск идёт по цепочке.
7. `OrderedDict` (из `collections`)
Словарь с гарантированным порядком вставки. Актуален для Python < 3.7.
8. `enum.Enum`, `enum.Flag`
Коллекции именованных констант.
9. `typing.NamedTuple`, `typing.TypedDict`
Типизированные обёртки над `namedtuple` и `dict`.
10. `heapq`, `bisect` — инструменты, а не коллекции
Работают с коллекциями, но сами коллекциями не являются:
- `heapq` — поддержка кучи через списки.
- `bisect` — вставка в отсортированный список с сохранением порядка.
---
1. Списки — `list`
Упорядоченная, изменяемая коллекция. Элементы могут повторяться, типы — любые.
Применяется, когда нужна гибкая последовательность: добавление, удаление, изменение элементов.
Создание: `[]`
2. Словари — `dict`
Коллекция пар **ключ → значение**. Ключи должны быть хешируемыми. С Python 3.7 сохраняет порядок вставки.
Полезен для структурированных данных: профили, конфиги, JSON.
Создание: `{}`
3. Кортежи — `tuple`
Упорядоченная, неизменяемая коллекция. Подходит для фиксированных данных.
Используется, когда важна неизменяемость: координаты, параметры, возвращаемые значения.
Создание: `()`
> 💡 Кортежи занимают меньше памяти и работают быстрее списков. Идеальны, когда изменяемость не нужна.
Понравилось — ставь «+»
Полезно? Подпишись.
Удачи! 🚀














Программирование на python
928 постов11.9K подписчиков
Правила сообщества
Публиковать могут пользователи с любым рейтингом. Однако!
Приветствуется:
• уважение к читателям и авторам
• конструктивность комментариев
• простота и информативность повествования
• тег python2 или python3, если актуально
• код публиковать в виде цитаты, либо ссылкой на специализированный сайт
Не рекомендуется:
• допускать оскорбления и провокации
• распространять вредоносное ПО
• просить решить вашу полноценную задачу за вас
• нарушать правила Пикабу