Как проверить, если список пуст?

Я использую его каждый раз, когда ссылаюсь на переменную экземпляра, даже если мне это не нужно. Я думаю, это делает код более понятным.

3235
задан ayhan 18 November 2018 в 21:13
поделиться

5 ответов

if not a:
  print("List is empty")

Используя неявные булевы из пустых list вполне pythonic.

4906
ответ дан Alec Alameddine 18 November 2018 в 21:13
поделиться

Пустой список самостоятельно считают ложью в тестировании истинного значения (см. документация Python ):

a = []
if a:
     print "not empty"

РЕДАКТИРОВАНИЕ @Daren Thomas

: Другая точка против тестирования пустого списка как Ложь: Что относительно полиморфизма? Вы не должны зависеть от списка, являющегося списком. Это должно просто шарлатан как утка - как Вы собираетесь получить свой duckCollection шарлатану ''Ложь'', когда это не имеет никаких элементов?

Ваш duckCollection должен реализовать __nonzero__ или __len__ так если a: будет работать без проблем.

131
ответ дан twasbrillig 18 November 2018 в 21:13
поделиться

Я предпочитаю следующее:

if a == []:
   print "The list is empty."
15
ответ дан Boris 18 November 2018 в 21:13
поделиться

pythonic способ сделать это от руководство по стилю PEP 8 (где Да средства “recommended” и Никакой средства “not recommended”):

Для последовательностей, (строки, списки, кортежи), используют то, что пустые последовательности являются ложью.

Yes: if not seq:
     if seq:

No:  if len(seq):
     if not len(seq):
1073
ответ дан David Moles 18 November 2018 в 21:13
поделиться
  • 1
    Я получил ту же проблему во время нагрузочного теста. Я предполагаю, что данные занимают много времени, которое будет сгенерировано, и инструмент тестирования загрузки не ожидает данные достаточно долго тогда, это закрывает соединение. Я Ваш случай, добавляя память, возможно, уменьшил продолжительность процесса поколения данных так нагрузочный тест, получил все данные без предела тайм-аута. Альтернатива для увеличения памяти должна была бы увеличить тайм-аут инструмента нагрузочного теста. – Julien Kronegg 4 November 2013 в 08:40

len() O (1) операция для списков Python, строк, dicts, и наборов. Python внутренне отслеживает число элементов в этих контейнерах.

JavaScript имеет подобное понятие truthy/falsy.

64
ответ дан Ry- 18 November 2018 в 21:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: