【发布时间】:2010-11-19 05:55:00
【问题描述】:
检查列表是否为空或仅包含无的最简洁方法?
我知道我可以测试:
if MyList:
pass
和:
if not MyList:
pass
但是如果列表有一个项目(或多个项目),但这些项目是无:
MyList = [None, None, None]
if ???:
pass
【问题讨论】:
检查列表是否为空或仅包含无的最简洁方法?
我知道我可以测试:
if MyList:
pass
和:
if not MyList:
pass
但是如果列表有一个项目(或多个项目),但这些项目是无:
MyList = [None, None, None]
if ???:
pass
【问题讨论】:
如果您关心列表中评估为 true 的元素:
if mylist and filter(None, mylist):
print "List is not empty and contains some true values"
else:
print "Either list is empty, or it contains no true values"
如果要严格检查None,请在上面的if 语句中使用filter(lambda x: x is not None, mylist) 而不是filter(None, mylist)。
【讨论】:
您可以使用all() 函数来测试是否所有元素都为None:
a = []
b = [None, None, None]
all(e is None for e in a) # True
all(e is None for e in b) # True
【讨论】:
您可以直接将列表与==进行比较:
if x == [None,None,None]:
if x == [1,2,3]
【讨论】: