检查列表是否有一个或两个子列表

时间:2017-06-16 20:09:04

标签: python

我试图找到一种简单的方法来查看列表的子列表是否包含另一个子列表。如果它有一个我想要a = 1,如果它有两个层我想要= 0.我到目前为止尝试了:

newElemLines = [[1, 42], [2, 42]]

try:
    newElemLines[0][0][0]
    a = 1
except ValueError:
    a = 0

newElemLines也可能在以下示例中看起来,这应该导致a = 1

newElemLines = [[[1, 42], [2, 42]], [[1, 42], [2, 42]]]

不幸的是,这不起作用。有人能帮帮我吗? 编辑:检查零元素就足够了。

1 个答案:

答案 0 :(得分:0)

嗯,这是我做的快速通用解决方案。它似乎工作,但我的感觉是,有一些我没有考虑过的边缘情况。但它已经开始了。

In [10]: def how_deep(lst, level=0):
    ...:     if isinstance(lst, list):
    ...:         return max(how_deep(l, level+1) for l in lst)
    ...:     return level - 1
    ...:

In [11]: how_deep([1,2])
Out[11]: 0

In [12]: how_deep([[1, 42], [2, 42]])
Out[12]: 1

In [13]: how_deep([[[[1],[2]],[3],[4],5],6,7,[8,[[[[[10]]]]]]])
Out[13]: 6