Проверьте, пуст ли пуст, не используя команду `not` - программирование
Подтвердить что ты не робот

Проверьте, пуст ли пуст, не используя команду `not`

Как узнать, пуст ли список без использования команды not? Вот что я пробовал:

if list3[0] == []:  
    print "No matches found"  
else:  
    print list3

Я очень начинающий, поэтому извините меня, если я ошибаюсь.

4b9b3361

Ответ 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"