我明白我的问题源于何处,我根本不知道如何修复它。
for x in listoflists:
if x[1] == [1,0]:
q=[0, 0]
for z in range(5):
q[z] = x[:]
q[z][1] = [0,1]
q[z][0][-1] = q[z][0][-1] * 1.25
print(id(q[z][0][-1]))
list.append(q)
我想做的是:
[1,0]
切换为[0,1]
我目前所拥有的是将所有先前值更改为我想要的最后一个值。
我知道这与python处理列表作为参考有关。
我不得不将我的第一行改为x
以减轻这一点,但我不知道如何绕过我采用特定索引列表项的部分,因为它显示{{1作为两个不同的内存空间。
我见过的所有解决方案都显示了列表推导,但我不知道这对我的情况有何影响,因为看起来我的z索引工作正常并且它们都有独立的内存ID。
答案 0 :(得分:2)
你需要做深层复制。切片做浅拷贝。
from copy import deepcopy
lst1 = ['a','b',['ab','ba']]
lst2 = deepcopy(lst1)
id(lst1[2])
# 4451912
id(lst2[2])
# 51003144