Наверное короля Саудовской Аравии везут
На наши налоги
А у меня одного возникло чувство: "А почему налоговая и г-н Бастрыкин не возбуждаются на вот такие демонстрации?"
Любой мало-мальский бизнес боится налоговой похлеще огня! Чуть что блокируются счета, уголовная ответственность и прочие кары. Приезжает ОМОН, изымаются документы, приостанавливается деятельность на месяцы... Хочешь купить дом - а докажи, что у тебя доходы честные и ты налоги прямо все-все заплатил... А тут - целая толпа дорогущих машин. Начать копать - так там уверен можно крайне много найти интересного.
Кто у нас главный ГИБДДшник в стране? К нему вопросы - почему парень 17 лет сидит за рулем и управляет машиной без В/у? Почему столько машин едет без гос.номеров? Почему машины едут по встречке? Почему машины тонированные в хлам чуть не поголовно? Почему установлены спец.сигналы на гражданские автомобили? Почему и какую роль выполняет в этом случае сопровождение ДПС со включенными спецсигналами? Зачем там вообще в качестве машин ДПС не самые дешевые так скажем мерседесы? Эти машины - федеральная собственность и куплены на деньги налогоплательщиков! Какая необходимость именно в таких машинах?
Время сейчас непростое - страна довольно ощутимо напрягается пытаясь помочь нашим воинам на СВО - постоянно собираются пожертвования и гуманитарные конвои. Постоянно нужна помощь нашим бойцам как в вооружении, так и в бытовом плане. Есть необходимость практически заново отстраивать огромное количество населенных пунктов на "новых" старых территориях. И тут такая демонстрация роскоши. С демонстративным наплевательством на многие законы.
Никогда не поверю, что наша власть не способна дать пинка зарвавшимся. Уверен, что будет достаточно одного единственного разговора с г-ном Кадыровым старшим - чтобы хотябы не выставлялось это напоказ.
Думаю тут бы гораздо большее уважение получилось бы собрать - если бы Адам например организовал поставку дронов в войска, генераторов, техники, амуниции. Шефство над восстановлением каких-либо населенных пунктов. Гуманитарные конвои. И тому подобное. Ведь в самом начале было огромное уважение - чеченцы собрали добровольческие батальоны и отправили их на СВО.
Показывать молодецкую удаль и понтоваться можно по разному. И результат этого тоже был бы совершенно другой.
Дисклеймер. На пиакбу нет редактора кода поэтому картинки. Поскольку это шпаргалка с примерами то в этом посте допустимо.
Простой класс из модуля `types` для создания объектов с динамическими атрибутами. Доступ — через точку (`obj.attr`).
Полезен, когда нужен синтаксис `obj.name` без создания класса.
> 💡 Альтернатива словарю, когда удобнее писать `obj.name`, а не `obj['name']`.
Неупорядоченная коллекция уникальных элементов. Поддерживает операции: объединение, пересечение, разность.
Применяется для удаления дубликатов и проверки вхождения.
Создание: `{}` или `set()`
Неизменяемая версия `set`. Можно использовать как ключ в словаре или элемент другого множества.
Неизменяемая структура с доступом по именам полей. Аналог кортежа, но читаемее.
> 💡 Отлично подходит для представления записей: точки, пользователи, конфиги — когда важна неизменяемость и читаемость.
Оптимизирован для быстрых операций в начале и конце. Аналог списка, но эффективнее для `appendleft`, `popleft`.
> 💡 Используется в алгоритмах: BFS, кэширование (LRU), буферы, где важна производительность на концах.
Подсчитывает частоту элементов в итерируемом объекте. Удобен для статистики, анализа.
> 💡 Полезен для анализа текстов, логов, голосований — везде, где нужно посчитать, «что встречается чаще».
Автоматически создаёт значение по умолчанию при отсутствии ключа. Убирает необходимость проверок `if key in dict`.
> 💡 Убирает шаблонный код вида `if key not in d: d[key] = []`. Делает код чище и безопаснее.
Декоратор для автоматического создания классов с инициализатором, строковым представлением, сравнением и т.д.
> 💡 Заменяет ручное написание `__init__`, `__repr__`, `__eq__`. Идеален для DTO, конфигов, моделей.
Наследуется от `collections.UserList`. Используется, чтобы создать список с переопределённым поведением.
> 💡 Полезен, когда нужно добавить логирование, валидацию, или изменить поведение стандартного списка.
Наследуется от `collections.UserDict`. Используется, чтобы создать словарь с переопределённым поведением.
> 💡 Используется для создания словарей с нормализацией ключей, валидацией, логированием, кешированием и т.п.
---
Выбор коллекции влияет на производительность и потребление памяти. Ниже — практические замеры для типичных сценариев.
Создадим коллекции из 1 000 000 целых чисел и сравним размер в памяти.
> 💡 Вывод:
> - `array.array` экономит ~2x памяти для чисел.
> - `list` и `tuple` потребляют примерно одинаково, но `tuple` немного быстрее при итерации.
---
Замерим время доступа к каждому элементу в коллекции из 10 000 000 элементов.
> 💡 Вывод:
> - `array.array` — самый быстрый для чисел.
> - `tuple` быстрее `list` на 10–20%.
> - Разница заметна на больших объёмах.
Создадим объекты с 5 полями и сравним размер.
> 💡 Вывод:
> - `SimpleNamespace` и `dataclass` потребляют столько же памяти, сколько `dict`, потому что используют `__dict__`.
> - Если нужна экономия — используйте `__slots__` (см. ниже).
> 💡 Вывод:
> - `__slots__` экономит память и ускоряет доступ к атрибутам.
> - Цена — нельзя добавлять новые атрибуты динамически.
Проверим, насколько быстрее `set` при проверке вхождения.
> 💡 Вывод:
> - `set` в тысячи раз быстрее `list` для проверки вхождения.
> - Всегда используй `set`, если нужно часто проверять `x in collection`.
> 💡 Вывод:
> - `frozenset` и `set` потребляют одинаково.
> - Разница только в изменяемости.
> 💡 Вывод:
> - `deque.appendleft` работает за O(1), в отличие от `list.insert(0)`, который O(n).
> - Для частых операций на обоих концах — только `deque`.
---
Общие рекомендации по производительности
Сравнение коллекций
> * — с Python 3.7+ словари, `defaultdict`, `UserDict`, `ChainMap` сохраняют порядок вставки.
---
Понравилось — ставь «+»
Полезно? Подпишись.
Задавай вопросы в комментариях 👇👇👇
Удачи! 🚀
Дисклеймер. На пиакбу нет редактора кода поэтому картинки. Поскольку это шпаргалка с примерами то в этом посте допустимо.
Статья вышла большая, количество иллюстраций превышает предел, поэтому я разделил ее на две части.
В 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` — вставка в отсортированный список с сохранением порядка.
---
Упорядоченная, изменяемая коллекция. Элементы могут повторяться, типы — любые.
Применяется, когда нужна гибкая последовательность: добавление, удаление, изменение элементов.
Создание: `[]`
Коллекция пар **ключ → значение**. Ключи должны быть хешируемыми. С Python 3.7 сохраняет порядок вставки.
Полезен для структурированных данных: профили, конфиги, JSON.
Создание: `{}`
Упорядоченная, неизменяемая коллекция. Подходит для фиксированных данных.
Используется, когда важна неизменяемость: координаты, параметры, возвращаемые значения.
Создание: `()`
> 💡 Кортежи занимают меньше памяти и работают быстрее списков. Идеальны, когда изменяемость не нужна.
Понравилось — ставь «+»
Полезно? Подпишись.
Удачи! 🚀
Кажется в какой то науч.поп. передаче слушал про биологические основы "понта", там на примере ряда животных показывалось, что определенные эпизоды поведения носят уведомительно - предупредительный характер. Например, когда тигры дерут деревья, они показывают - территория моя, чем выше след когтей - тем я выше и сильнее и я тут хозяин. Так и с людьми - показушный вне норм ислама намаз - это моя территория, чем он больше мешает другим - посередине дороги или метро - тем я сильнее что могу себе такое позволить. Так и кортеж и избиение журавеля на камеру - РФ это моя территория, смотри какой я сильный, что могу отобрать из бюджета и купить что хочу, что могу избить на камеру человека и ничего не будет мне - это моя территория и я тут самый сильный. Вообщем с точки зрения биологии все логично.