首页 > 解决方案 > 更改列表中的一个输入会更改其所有输入

问题描述

我正在尝试生成一个 3 维列表(proposedFillings如下),其中i第一个输入是以不同方式排列的列表中的i数字列表。shiftedContents因此,我从proposedFillings = [[[]]].

在循环的连续迭代中for,我想proposedFillings[i+1]基于proposedFillings[i]. 不幸的是,每当我向proposedFillings列表中添加一个新元素时,所有先前的元素都会更改为新添加的元素,我不知道为什么。

shiftedContents = [1,2,3,4,5]
proposedFillings = [[[]]]

for i in [0..len(shiftedContents) - 1]:
    proposedFillings.append([])
    for j in [0..len(proposedFillings[i]) - 1]:
        for k in [0..len(proposedFillings[i][j]) - 1]:
            if k == 0:
                proposedFillings[i+1].append(proposedFillings[i][j])
                proposedFillings[i+1][len(proposedFillings[i+1]) - 1][k].append(shiftedContents[i])
            elif len(proposedFillings[i][j][k-1]) > len(proposedFillings[i][j][k]):
                proposedFillings[i+1].append(proposedFillings[i][j])
                proposedFillings[i+1][len(proposedFillings[i+1]) - 1][k].append(shiftedContents[i])
        proposedFillings[i+1].append(proposedFillings[i][j])
        proposedFillings[i+1][len(proposedFillings[i+1]) - 1].append([shiftedContents[i]])
for i in [0..len(proposedFillings) - 1]:
    print(proposedFillings[i])

例如,对于shiftedContents = [1,2]: 预期输出:

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

实际输出:

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

标签: pythonarrayslist

解决方案


推荐阅读