Python更改列表中的值会无意间将它们全部更改

时间:2018-07-07 03:03:12

标签: python

我有一堂课

class Tree(object):

    def __init__(self):
        self.health = 100

我在这里使用它:

tree_list += [Tree()] * random.randint(4, 12)

这使列表包含多个Tree()类。问题是,当我在tree_list中的一项更改“健康”时:

tree_list[0].health -= 25

它更改tree_list中每个项目中的“健康”值。有人可以帮我弄清楚为什么它更改了每个项目而不是我打算更改的项目的价值吗?任何帮助,将不胜感激。 :D

1 个答案:

答案 0 :(得分:0)

我通过更改此方法解决了该问题:

tree_list += [Tree()] * random.randint(4, 12)

对此:

for a in range(random.randint(4, 12)):
    tree_list.append(Tree())

可能不是最好的方法,但现在有效。