如何在不使用 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,因为它包含某些内容。(如果您想测试包含所有虚假内容的列表,请使用all或any : any(e for e in li)
is 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"
检查它的长度。
l = []
print len(l) == 0
你会这样做
if len(list3) == 0:
print("No matches found")
Python 提供了一个内置的 any() 函数来检查一个可迭代对象是否为空:
>>>list=[]
>>>any(list)
False
如果可迭代对象包含“True”值,则该函数返回 True,否则返回 False。
但是,请注意,列表 [0] 也使用 any() 返回 False。