Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
理解Python中的嵌套列表_Python_Arrays_List_Nested Lists - Fatal编程技术网

理解Python中的嵌套列表

理解Python中的嵌套列表,python,arrays,list,nested-lists,Python,Arrays,List,Nested Lists,我在理解什么是一级列表、两级列表和三级列表时有点困难。我只想看一眼它,知道它是一个还是另一个,但我对括号感到困惑 什么定义列表中的级别 这是一个三级列表吗 ​[ [[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]]]; 列表中的列表列表中的列表: [1, 2, [

我在理解什么是一级列表、两级列表和三级列表时有点困难。我只想看一眼它,知道它是一个还是另一个,但我对括号感到困惑

什么定义列表中的级别

这是一个三级列表吗

​[ [[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]]];
列表中的列表列表中的列表:

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

当一个人谈论某种容器(如列表、元组或dict)中的级别时,你可以永远像这样继续下去。因此,一级列表中不包含其他列表:

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

希望这能帮你把事情弄清楚。

最好的思考方式是容器

在一维列表/数组中,将其视为包含数据的单个框。 比如说

my_li = [1,2,3]
是一个包含值1、2、3的框

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

my_li_two = [[1],[2],[3]]
是一个包含3个框的框,每个框包含一个值

第三级或三维列表与二维列表类似,只是现在它是一个包含值框的大框

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

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

[[7,2]、[2,3]、[4]、[5,6]、7,9]
缺少一个结束括号。列表是一个级别。列表中的列表有两个级别。列表中的列表是三。以此类推……从
0
开始。从左到右浏览列表的表示形式。对于
[
添加
1
,对于
]
减去
1
。你达到的最高数字是这个级别。如果你最后得到的不是
0
,那么就有问题了。@Helloimjs0n你的问题得到了回答吗?还有什么不清楚的吗?@timgeb是的!非常感谢。当然,破坏这个幼稚函数的一个好方法是向它传递一个递归列表<代码>a=[];a、 插入(0,a);雀巢打印(a)