Проверьте, пуст ли list без использования команды " не
Как я могу узнать, пуст ли список без использования команды not?
Вот что я попробовал:
if list3[0] == []:
print "No matches found"
else:
print list3
Я очень новичок, поэтому извините меня, если я делаю глупые ошибки.
4 ответов
в порядке предпочтения:
# 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, так и AN else, вы также можете переупорядочить случаи:
if list3:
# list has elements
else:
# list is empty
вы узнаете, пуст ли список, проверив его "истину":
>>> bool([])
False
>>> bool([0])
True
в то время как во втором случае 0
является ложным, но список [0]
верно, потому что он содержит что-то. (Если вы хотите проверить список, содержащий все фальшивые вещи, используйте все или любой: any(e for e in li)
истинно, если какой-либо элемент в 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"