这是我的代码片段
print (stats)
print (mstats)
stats[1] -= round(dam)
print (mstats)
print (stats)
stats是应该编辑的列表,但也编辑了mstats。 我不知道为什么,并且想知道如何阻止mstats改变。
这是代码输出的内容:
['One', 142, 27, 0.025, 12, 2.3, 8, 14, '']
['One', 142, 27, 0.025, 12, 2.3, 8, 14, '']
['One', 133, 27, 0.025, 12, 2.3, 8, 14, '']
['One', 133, 27, 0.025, 12, 2.3, 8, 14, '']
两个列表中的索引[1]从142变为133,只应该在一个列表中。 你能帮帮我吗? 感谢
答案 0 :(得分:2)
可能是两个不同名称的列表相同。
您可以使用
进行检查print(stats is mstats)
这与
不同print(stats == mstats)
前者告诉你,它是同一个对象,后者检查实际内容,这可能与硬币相同。
你可能早些时候写过像
这样的东西mstats = stats
为您节省工作量。这不会创建新列表,但会为同一旧列表指定第二个名称。相反,您必须强制复制列表。例如(可能还有更多选项)
mstats = stats[:]
或
mstats = 1*stats
或
mstats = list(stats)
会这样做。