了解 Python 中的嵌套列表

Understanding nested lists in Python

我在理解什么是 一级列表 二级列表 三级列表是。我只想 眼球 它并知道它是其中之一,但我对括号感到困惑。

什么定义了列表中的级别?

这算是三级列表吗?

​[ [[5,6],7], 9]

或者这是一个三级列表?

​[ [7,2], [[2,3],4], [[[5,6],7],9] ]

python中的基本列表:

[1, 2, 3, 4, 5 ];

列表中的列表:

[1, 2, [1, 2]];

列表中的列表:

[1, 2, [1, 2, [1, 2]]];

你可以一直这样下去

当人们谈论某种容器(例如列表、元组或字典)中的级别时,就是在谈论嵌套。所以一级列表不包含其他列表:

one_level = [1, 2, 3, 4]

将一个列表添加到另一个列表后,您就有了一个两级列表:

two_level[['a', 'b', 'c'], ['d', 'e', 'f']]

依此类推:

three_level = [[1, 2, 3], [[4, 5], [6, 7]], [8, 9, 10]]

four_level = [[[['this', 'that']], 'these'], 'those']

如您所见,嵌套的顺序并不重要,重要的是嵌套的深度。

嵌套列表的概念并不复杂,它只是意味着您可以在列表中包含一个列表。在该列表中,您可以有另一个列表,依此类推。

术语一级、二级或n级列表的使用并不广泛,使用术语嵌套级别更为常见。因此,让我们编写一个小算法来可视化嵌套级别:

>>> def nestprint(lst, level=0):
...     print('{} is at nesting level {}'.format(lst, level))
...     for item in lst:
...         if isinstance(item, list):
...             nestprint(item, level+1)

对于给定的列表,这将打印出每个列表的嵌套级别。以下是它为您的示例所做的工作:

>>> nestprint([[[5,6],7],9])
[[[5, 6], 7], 9] is at nesting level 0
[[5, 6], 7] is at nesting level 1
[5, 6] is at nesting level 2
>>>    
>>> nestprint([[7,2],[[2,3],4],[[[5,6],7],9]])
[[7, 2], [[2, 3], 4], [[[5, 6], 7], 9]] is at nesting level 0
[7, 2] is at nesting level 1
[[2, 3], 4] is at nesting level 1
[2, 3] is at nesting level 2
[[[5, 6], 7], 9] is at nesting level 1
[[5, 6], 7] is at nesting level 2
[5, 6] is at nesting level 3

希望这能帮您解决问题。

最好从容器的角度来考虑。

在一维空间中 list/array 可以将其视为包含数据的单个框。 例如

my_li = [1,2,3]

是一个包含值 1、2、3 的框。

二维列表就像一个盒子套在另一个盒子里。如果你打开第一个盒子,你会发现里面有很多其他的盒子,里面有信息。

my_li_two = [[1],[2],[3]]

是一个包含 3 个框的框,每个框包含一个值。

第三级或 3 维列表就像二维列表一样,不同之处在于它现在是一个大框,其中包含包含值框的框。

my_li_three = [[[1,2]],[[3]]]

任何额外的层或级别只会为这个类比添加更多框。