Обнаружение пустого списка против списка пустых строк - PullRequest
0 голосов
/ 28 апреля 2018

Я новичок в Python, и я искал решение для обнаружения пустого списка. Скажем, у нас есть пустая строка, например:

a = ''
if not a:
    print('a is empty')

Это отлично работает. Однако моя проблема возникает, когда:

a = ['','','']
if not a:
    print('a is empty')

Этот не работает. Каков Pythonic способ обнаружения, который, я думаю, представляет собой список, содержащий пустые строки в приведенном выше случае?

Заранее спасибо за ваши комментарии и предложения.

1 Ответ

0 голосов
/ 28 апреля 2018

Список пуст, только если в нем нет участников. У него есть участники, но они пусты, у него все еще есть участники, , поэтому он все еще правдивый .


Если вы хотите проверить, все ли члены списка пусты, вы можете написать это так:

if all(not element for element in a):
    print('a is made of empty things')

Функция all должна быть довольно очевидной. Аргументом для этого может не быть. Это генераторное выражение - если вы никогда его не видели, сначала прочитайте о списках , затем итераторах и следующих двух разделах.


Или вы можете повернуть его и проверить, не являются ли какие-либо из членов не пустыми:

if not any(a):
    print('a is made of empty things')

Двойной негатив кажется немного сложнее понять. Но с другой стороны, это означает, что вам не нужно понимать выражение генератора (потому что (element for element in a) - это то же самое, что и a, поэтому мы можем сделать его простым).

(И, как указывает PM 2Ring, этот, вероятно, немного быстрее, хотя, вероятно, его недостаточно для большинства применений.)

...