首页 > 解决方案 > 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

标签: python

解决方案


我通过改变这个来解决它:

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

对此:

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

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


推荐阅读