Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List_Append - Fatal编程技术网

在python中将列表追加到列表列表中会更改所有子列表

在python中将列表追加到列表列表中会更改所有子列表,python,list,append,Python,List,Append,我正在尝试创建并附加一个列表和一个列表中的索引。追加任何列表元素将自动追加到此列表中的所有可用列表 首先,我有一个清单如下 sygma_list [[]] * 3 我还有另外一份清单,上面有表格 mts_columns1 = [[1,2,3], [4,5,6], [6,7,8]] mts_columns2 = [[1,2,3], [4,5,6], [6,7,8]] 当在sygma_列表上循环时,我喜欢这样: for i in range(0, 3): sygma_list[i

我正在尝试创建并附加一个列表和一个列表中的索引。追加任何列表元素将自动追加到此列表中的所有可用列表 首先,我有一个清单如下

sygma_list [[]] * 3
我还有另外一份清单,上面有表格

mts_columns1 = [[1,2,3], [4,5,6], [6,7,8]]
mts_columns2 = [[1,2,3], [4,5,6], [6,7,8]]
当在sygma_列表上循环时,我喜欢这样:

 for i in range(0, 3):
       sygma_list[i].append(mts_column[i])
sygma_列表的结果非常令人震惊,因为append在列表的每个元素上运行,而不是获得

sygma_list = [[[1,2,3], [1,2,3]],
              [[4,5,6],[4,5,6]],
              [[6,7,8],[6,7,8]]]

代码中最大的陷阱是:当您这样做时:

sygma_list = [[]] * 3
在同一个列表上创建一个大小为3的引用数组:不是您通常想要的,当然也不是这里

改为这样做:

sygma_list = [list() for x in range(3)]
这将创建3个不同的列表

此构造对于不可变对象(如[0]*3或[foo]*4)是合适的

让我们考虑这个固定的代码:

sygma_list = [list() for _ in range(3)]

mts_column = [[1,2,3], [4,5,6], [6,7,8]]

for i in range(0, 3):
    sygma_list[i].append(mts_column[i])

print(sygma_list)
收益率:

[[[1, 2, 3]], [[4, 5, 6]], [[6, 7, 8]]]
顺便说一句:不确定你是否想添加或扩展你的列表,是否要将其展平

sygma_list[i].extend(mts_column[i])

将创建列表而不是列表列表您的代码中最大的陷阱是:当您这样做时:

sygma_list = [[]] * 3
在同一个列表上创建一个大小为3的引用数组:不是您通常想要的,当然也不是这里

改为这样做:

sygma_list = [list() for x in range(3)]
这将创建3个不同的列表

此构造对于不可变对象(如[0]*3或[foo]*4)是合适的

让我们考虑这个固定的代码:

sygma_list = [list() for _ in range(3)]

mts_column = [[1,2,3], [4,5,6], [6,7,8]]

for i in range(0, 3):
    sygma_list[i].append(mts_column[i])

print(sygma_list)
收益率:

[[[1, 2, 3]], [[4, 5, 6]], [[6, 7, 8]]]
顺便说一句:不确定你是否想添加或扩展你的列表,是否要将其展平

sygma_list[i].extend(mts_column[i])

我想这是因为问题不清楚令人惊讶的结果是什么,这增加了混乱。我得到了一个不同的预期结果。我已经编辑了我的帖子。内部列表数组的重复是主要问题。它仍然是向下投票+3/-1,但后来得到了3次向上投票,因此一些人得出了给出根本原因的答案。谢谢你。也许整个问题+答案都不清楚,仅此而已。我特别喜欢这个问题,因为我自己在做错事的时候也遇到过这个问题:[MyObject]*10。我想这是因为这个问题不清楚令人惊讶的结果是什么,并且增加了困惑。我得到了一个不同的预期结果。我已经编辑了我的帖子。内部列表数组的重复是主要问题。它仍然是向下投票+3/-1,但后来得到了3次向上投票,因此一些人得出了给出根本原因的答案。谢谢你。也许整个问题+答案都不清楚,仅此而已。我特别喜欢这个问题,因为我自己在做错事时也遇到过这个问题:[MyObject]*10。