【发布时间】:2013-07-29 18:58:59
【问题描述】:
这对我来说似乎是一个陷阱,我想不通
>>> from collections import Counter
>>> tree = [Counter()]*3
>>> tree
[Counter(), Counter(), Counter()]
>>> tree[0][1]+=1
>>> tree
[Counter({1: 1}), Counter({1: 1}), Counter({1: 1})]
为什么更新一个 Counter 会更新所有内容?
【问题讨论】:
-
因为
[Counter()]*3这一行。您没有创建 3 个独特的计数器。您正在创建一个列表,其中包含对同一 Counter 对象的三个引用。 -
您有一个列表,其中包含对同一计数器的三个引用。请尝试使用列表推导。
标签: python python-2.7