检查列表是否为空而不使用`not`命令
如何在不使用not命令的情况下查看列表是否为空?
这是我试过的:
if list3[0] == []:
print "No matches found"
else:
print list3
如果我犯了愚蠢的错误,我是一个初学者,所以很抱歉。
按照优先顺序:
# 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
通过测试它的“真实性”,你可以发现列表是否为空:
>>> bool([])
False
>>> bool([0])
True
而在第二种情况下, 0
为False,但列表[0]
为True,因为它包含某些内容。 (如果你想测试一个包含所有虚假事物的列表,使用全部或任何: any(e for e in li)
如果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"
检查它的长度。
l = []
print len(l) == 0
链接地址: http://www.djcxy.com/p/22503.html