import random
stats = []
statslist = []
rollslist = []
for var1 in range(4):
stats.append(random.randrange(1, 7))
rollslist.append(stats)
print(stats)
b = min(stats)
stats.remove(b)
print(sum(stats))
statslist.append(sum(stats))
print(stats)
print(rollslist)
print(statslist)
实际结果
[5, 1, 1, 3]
9
[5, 1, 3]
[[5, 1, 3]]
[9]
预期结果
[5, 1, 1, 3]
9
[5, 1, 3]
[[5, 1, 1, 3]]
[9]
我期待它为第四个结果打印四个数字而不是它给我的三个数字。我在删除号码之前添加了列表。我错过了什么?
答案 0 :(得分:6)
您添加了一个可变列表。当您稍后修改它时,修改会影响您放在列表中的对象,因为它是直接引用而不是副本。
制作列表副本的最简单方法是使用切片:
rollslist.append(stats[:])
答案 1 :(得分:3)
stats
列表。意思是,稍后进行的更改(如删除项目)仍将反映出来。对于预期的行为,您可以make a copy of the list这样:
newCopy = list(stats)
rollslist.append(newCopy)