如何在Python中检查空的嵌套列表?

时间:2016-09-26 08:02:42

标签: python list python-3.x if-statement for-loop

说我有一个像

这样的清单
cata = [["Shelf", 12, "furniture", [1,1]],
        ["Carpet", 50, "furnishing", []]]

我希望在每个嵌套列表中找到它是否为空。

我知道使用for循环遍历列表,并且if语句要验证我在函数中的颜色

def myfunc(cata):
    for inner in cata:
        for inner_2 in inner[3]:
            if inner_2:
                return "True"
            else:
                return "False"

然而不是回归:

'True'
'False'

我得到的只是:

'False'

是否有一些搜索我缺少的嵌套循环的方法?

1 个答案:

答案 0 :(得分:3)

return来自函数,这实际上意味着你不评估每个元素。

除此之外,for inner_2 in inner[3]:将无法执行您想要的操作,因为它不会为空列表执行(它没有要迭代的元素!)。您可以做的是浏览每个列表并yield inner[3]的真相:

def myfunc(cata):
    for inner in cata:
        yield bool(inner[3])

yield将使该函数成为可以迭代并返回结果的生成器:

for i in myfunc(cata):
    print(i)

打印:

True
False

当然,这很容易转换为存储结果的列表理解:

r = [bool(x[3]) for x in cata]

现在持有r

[True, False]