Проверьте, пуст ли пуст, не используя команду `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...
Согласно PEP 8, это правильный способ:
• Для последовательностей (строки, списки, кортежи) используйте тот факт, что пустые последовательности являются ложными.
Yes: if not seq:
if seq:
No: if len(seq)
if not len(seq)
Вы проверяете, существует ли в списке определенный индекс, используя try
:
>>> try:
... li[3]=6
... except IndexError:
... print 'no bueno'
...
no bueno
Итак, вы можете отменить порядок своего кода:
if list3:
print list3
else:
print "No matches found"
Ответ 3
Проверьте его длину.
l = []
print len(l) == 0
Ответ 4
Здесь:
if len(list3) == 0:
print "No matches found"