Python 检查列表是否有一层或两层子列表
我试图找到一种简单的方法来查看列表的子列表是否包含另一个子列表。如果它有一层,我想要a=1,如果它有两层,我想要a=0。到目前为止,我尝试的是:Python 检查列表是否有一层或两层子列表,python,Python,我试图找到一种简单的方法来查看列表的子列表是否包含另一个子列表。如果它有一层,我想要a=1,如果它有两层,我想要a=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
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]]]
不幸的是,这不起作用。有人能帮我吗?编辑:检查zeroteh元素就足够了。Hm,这里是我制定的一个快速通用解决方案。这似乎有效,但我的感觉是,有些边缘案例我没有考虑。但这是一个开始
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
如果嵌套是规则的,那么这是相对简单的。如果它是任意的,那么事情就复杂了一点。只是澄清一下,您可以保证
a
的每个元素都已经是一个列表,如果这些列表中的任何一个都包含一个子列表作为至少一个元素,a=1
?例如,[[1,2],[3,4,5]]
将导致1?另外,您发布的示例如何不起作用?(除了明显的语法错误表明您没有测试它之外)@madpysicast它说TypeError:newElemLines=[[1,42],[2,42]]@juanpa.arrivillaga时,“int”对象不可下标