当我不编辑它时列出更改

时间:2016-03-15 19:01:08

标签: python arrays list python-3.x

这是我的代码片段

    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,只应该在一个列表中。 你能帮帮我吗? 感谢

1 个答案:

答案 0 :(得分:2)

可能是两个不同名称的列表相同。

您可以使用

进行检查
print(stats is mstats)

这与

不同
print(stats == mstats)

前者告诉你,它是同一个对象,后者检查实际内容,这可能与硬币相同。

你可能早些时候写过像

这样的东西
mstats = stats

为您节省工作量。这不会创建新列表,但会为同一旧列表指定第二个名称。相反,您必须强制复制列表。例如(可能还有更多选项)

mstats = stats[:]

mstats = 1*stats

mstats = list(stats)

会这样做。