gpt4 book ai didi

python - 使用值(例如 0)初始化嵌套列表

转载 作者:行者123 更新时间:2023-12-01 03:02:28 26 4
gpt4 key购买 nike

array1 = [[0]*4]*4

array2 = [[0,0,0,0]]*4

array3 = [[0,0,0,0],
[0,0,0,0],
[0,0,0,0],
[0,0,0,0]]

array1[0][0] = 9000
array2[0][0] = 9000
array3[0][0] = 9000

In [77]: array1
Out[77]: [[9000, 0, 0, 0],
[9000, 0, 0, 0],
[9000, 0, 0, 0],
[9000, 0, 0, 0]]

In [78]: array2
Out[78]: [[9000, 0, 0, 0],
[9000, 0, 0, 0],
[9000, 0, 0, 0],
[9000, 0, 0, 0]]

In [79]: array3
Out[79]: [[9000, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]

改变任何行值都会改变初始化快捷方法的所有行值。
我获得非变异行为的唯一方法是写出整个列表。
一定有更好的方法(?),想想你想根据不同列表的长度来初始化列表的情况。

最佳答案

使用列表理解。

my_list = [ [0]*4 for _ in range(4)]

请注意,列表是可变的,但整数则不然。因此 [0]*4 的行为就像您所期望的那样,但是 [[0]*4]*4 “泄漏”发生了变化。

使用列表理解每次都会创建一个新的外部列表,从而避免示例中出现问题的行为。

关于python - 使用值(例如 0)初始化嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43684041/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com