我有此列表:
li = [{}]
if li:
print 'yes'
#Output - yes
我错误地认为它不会输出任何东西,因为它是空的(虚假)。现在,如何检查其空度?
答案 0 :(得分:2)
如果唯一的情况是[{}]
,则any([{}])
返回False
。但是,它也会为您可能不需要的False
返回[0]
,并且会为True
返回[[{}]]
。
如果您要检查列表是否仅递归包含空项目,请尝试以下操作:
def is_empty_recursive(collection):
try:
if len(collection) == 0:
return True
except TypeError:
# This will happen if collection is not a collection for example len(0) will cause this exception
return False
return all(is_empty_recursive(item) for item in collection)
现在您可以像使用它了
li = [{}]
if not is_empty_recursive(li):
print("yes")
答案 1 :(得分:1)
要检查是否为空,您可以查看列表中包含的所有内容:
emptydict = [{}]
for obj in emptydict:
if obj:
print("yes")
else:
print("no")
要了解集合为何以某种方式运行,您可以简要回顾一下集合理论(所有集合中的集合是否都包含自身?):
答案 2 :(得分:-2)
有多种方法取决于您要实现的目标。您可以简单地使用:
li = []
print(li)
如果没有返回任何内容,则没有任何内容。