了解 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]]]
任何额外的层或级别只会为这个类比添加更多框。
我在理解什么是 一级列表 、 二级列表 和 三级列表是。我只想 眼球 它并知道它是其中之一,但我对括号感到困惑。
什么定义了列表中的级别?
这算是三级列表吗?
[ [[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]]]
任何额外的层或级别只会为这个类比添加更多框。