Проверьте, пуст ли пуст, не используя команду `not`
Как узнать, пуст ли список без использования команды not?
Вот что я пробовал:
if list3[0] == []:
print "No matches found"
else:
print list3
Я очень начинающий, поэтому извините меня, если я ошибаюсь.
Ответ 1
В порядке предпочтения:
# Good
if not list3:
# Okay
if len(list3) == 0:
# Ugly
if list3 == []:
# Silly
try:
next(iter(list3))
# list has elements
except StopIteration:
# list is empty
Если у вас есть как if, так и else, вы также можете переупорядочить случаи:
if list3:
# list has elements
else:
# list is empty
Ответ 2
Вы обнаруживаете, что список пуст, проверяя его "правду":
>>> bool([])
False
>>> bool([0])
True
Пока во втором случае 0 является False, но список [0] имеет значение True, потому что он содержит что-то. (Если вы хотите проверить список, содержащий все ложные вещи, используйте all или any: any(e for e in li) является True, если любой элемент в li прав.)
Это приводит к этой идиоме:
if li:
# li has something in it
else:
# optional else -- li does not have something
if not li:
# react to li being empty
# optional else...