如果我们有:
seq = []
要检查它是否为空,我们可以这样做:
print "empty" if not seq else "not empty"
但是,如果我们有以下内容,这将无效:
seq[[],[]]
有没有一种简单的方法可以检查这个?
我知道我们可以这样做:
for mini_seq in seq:
print "empty" if not mini_seq else "not empty"
但有更好的方法吗?
编辑:
为了澄清,虽然我的上述方法可能没有提出建议,但我想要一个响应者想出的输出,无论如何。
答案 0 :(得分:5)
print 'empty' if not any(seq) else 'not empty'
答案 1 :(得分:2)
如果要确定每个子列表是否为空,请使用not any(seq)
。要为每个子列表单独打印消息,您的方法就可以了。
答案 2 :(得分:0)
检查子列表中是否有任何一个值
flag = False
for i in seq:
if i:
flag = True
if flag:
print "Not empty"
else:
print "Not empty"
答案 3 :(得分:0)
def deep_empty(l):
"""Returns True if l is an empty list, or if all its elements are deep_empty."""
if not isinstance(l, list):
return False
return all(deep_empty(element) for element in l)
递归搜索树以查找不是列表的任何内容。请注意,如果有一个循环,则会失败:
l = []
l.append(l)
print deep_empty(l) # Oh no!