TGViewer
Cool and Fun Python Cool and Fun Python @python3k · 510 subscribers
Post #92 621
Очевидное рядом или проверка длинны коллекции без использования функции проверки длинны коллекции 🫣

Посмотрите на два простых примера кода. Какой из них работает быстрее и почему?

Вариант 1
my_list = []
...
# наполняем список данными
...
while my_list:
print(my_list.pop())
Вариант 2
my_list = []
...
# наполняем список данными
...
while len(my_list) > 0:
print(my_list.pop())
Для опытного разработчика очевидно, что оптимален первый вариант.

Почему?
Список, как и другие коллекция Python - объект. Внутри объекта хранятся не только данные (на самом деле не данные, а указатели на данные), но и полезная информация. Одна из таких полезностей - количество элементов коллекции. Это целое число, которое автоматически меняется при добавлении и удалении элементов. Объект коллекции всегда помнит сколько в нём элементов.

Вариант 1 обращается к количеству напрямую, получает целое число и если оно ноль, у нас False. А если не ноль - True.

Вариант 2 вызывает функцию len(), которая обращается к счётчику количества элементов в коллекции и получает целое число. Если число больше нуля, у нас True. А если нет - False.

Очевидно, что получение int и его преобразование к bool работает быстрее, чем вызов функции, которая возвращает int для сравнения с другим int и получения bool 🧐

P.S. Для любителей асимптотики. Оба варианта работают за O(1) 😉
  • 👍 6
  • ❤ 1
  • ⚡ 1
More from @python3k
  1. Feb 25, 2026Магические числа Нравится волшебство? А вот и зря. Магические числа - антипаттерн в програ…
  2. Feb 9, 2026Про ОС Оказывается мысли о том, что у программиста должен быть MacBook, а код надо писать…
  3. Feb 1, 2026Кто-нибудь пользовался новой удалённой отладкой в Python 3.14? Поделитесь своим опытом в к…
  4. Jan 25, 2026Redis хорош, но... Ничего не имею против хранения данный в ОЗУ при помощи Redis. Быстрый д…
  5. Jan 20, 2026В продолжение идеи про словарь функций Начало тут def handle_negative(): print("Обработка…
  6. Jan 11, 2026Альтернатива if-elif-else / match-case из далёкого прошлого Этот приём я узнал лет пять на…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →