Как проверить, пуст ли список в Python (значения истины Python)

Изучите самые питонические способы проверить, пуст ли список в Python. Сравните неявные логические проверки со сравнением длин.

Попробуйте это решение в редакторе

Обзор

При разработке на Python вам часто придется проверять, содержит ли список элементы, прежде чем пытаться прочитать, изменить или обработать его содержимое. Доступ к элементам пустого списка с помощью скобок (например, «my_list[0]») вызывает ошибку «IndexError», которая останавливает выполнение программы. Таким образом, реализация чистых шаблонов защитных проверок необходима для стабильности приложения.

Самый питонический способ проверить, пуст ли список, — использовать его неявное логическое значение (правдивость). В Python пустые коллекции (включая списки, словари, кортежи и наборы) оцениваются как «False» в логическом контексте, тогда как заполненные коллекции оцениваются как «True». Написание `if not my_list:` является простым, легко читаемым и соответствует рекомендациям PEP 8.

Хотя сравнение длины списка с нулем (например, `if len(my_list) == 0:`) или сравнение списка непосредственно с пустым литералом списка (например, `if my_list == []:`) также работает, эти подходы обычно не рекомендуются, поскольку они менее кратки и могут быть немного медленнее. Использование встроенной в Python проверки истинности делает ваш код чище и эффективнее.

Код и вывод выполнения

В этом скрипте показаны различные методы проверки пустости списка в Python.

empty_list = []
full_list = [10, 20, 30]

# Method 1: The Pythonic Way (Implicit boolean check)
if not empty_list:
    print("empty_list is indeed empty!")

if full_list:
    print("full_list has elements inside!")

# Method 2: Length comparison (Less Pythonic, but functional)
if len(empty_list) == 0:
    print("Length of empty_list is 0.")
Терминальный выход
empty_list is indeed empty!
full_list has elements inside!
Length of empty_list is 0.

Пошаговая реализация

  • Напишите, если не my_list:, чтобы проверить, пуст ли список (большинство питонических подходов).
  • Напишите if my_list:, чтобы проверить, содержит ли список один или несколько элементов.
  • Избегайте использования len(my_list) == 0 или my_list == [] для проверки пустоты.

Часто задаваемые вопросы

Почему «if not my_list» предпочтительнее «if len(my_list) == 0»?

Он более читабелен, идиоматичен и немного быстрее, поскольку позволяет избежать вызова функции len() для поиска и сравнения целых чисел.

Работает ли эта проверка для других коллекций, таких как словари или кортежи?

Да, то же самое правило истинности применяется к пустым словарям ({}), пустым кортежам (()), пустым множествам (set()) и пустым строкам ("").

Связанные темы

Рекомендуемые ресурсы Python

Расширьте свои знания с помощью соответствующих интерактивных руководств, шпаргалок и сравнений кода.