Список пуст, только если в нем нет участников. У него есть участники, но они пусты, у него все еще есть участники, , поэтому он все еще правдивый .
Если вы хотите проверить, все ли члены списка пусты, вы можете написать это так:
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, этот, вероятно, немного быстрее, хотя, вероятно, его недостаточно для большинства применений.)