我正在尝试创建列表的嵌套列表,并希望能够操纵列表中的单个元素。我在列表中填充了零,并希望能够通过索引每个元素将它们更改为其他值。
每次我为一个元素分配一个值时,整个行都会被分配一个新值,而不仅仅是一个元素。
有没有一种方法可以解决此问题,而无需使用小块数组?
# Expected output:
[[0,0,0,0,0],
[0,0,0,5,0],
[0,0,0,0,0]]
# Actual output:
[[0,0,0,5,0],
[0,0,0,5,0],
[0,0,0,5,0]]
我尝试使用[:]对列表进行切片以引用值,我尝试了深层复制,尝试了copy_list = list(org_list),但没有任何效果。
sample_list = [0]*5
sample_list = [sample_list]*3
copy_sample_list = copy.deepcopy(sample_list)
copy_sample_list = sample_list[:]
copy_sample_list = list(sample_list)
copy_sample_list[1][3] = 5
copy_sample_list
答案 0 :(得分:0)
这是因为[[0]*5]*3
表示对[0]*5
列表的引用,因此,当您修改值时,整个列表将被更改。
尝试此代码:
sample_list = [[0]*5 for _ in range(3)]
copy_sample_list = sample_list.copy()
copy_sample_list[1][3] = 5
输出:
[[0,0,0,0,0],
[0,0,0,5,0],
[0,0,0,0,0]]