检查嵌套列表是否有任何条目的简便方法

时间:2013-12-03 04:34:52

标签: python

如果我们有:

seq = []

要检查它是否为空,我们可以这样做:

print "empty" if not seq else "not empty"

但是,如果我们有以下内容,这将无效:

seq[[],[]]

有没有一种简单的方法可以检查这个?

我知道我们可以这样做:

for mini_seq in seq:
    print "empty" if not mini_seq else "not empty"

但有更好的方法吗?

编辑
为了澄清,虽然我的上述方法可能没有提出建议,但我想要一个响应者想出的输出,无论如何。

4 个答案:

答案 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!