gpt4 book ai didi

python - 运算符 += 与 collections.Counter 的行为不一致

转载 作者:行者123 更新时间:2023-11-28 21:47:53 25 4
gpt4 key购买 nike

In [20]: from collections import Counter

In [21]: x = [Counter()]

In [22]: z = x[0]

In [23]: z.update("w")

In [24]: z
Out[24]: Counter({'w': 1})

In [25]: x
Out[25]: [Counter({'w': 1})]

In [26]: z += Counter(["q"])

In [27]: z
Out[27]: Counter({'q': 1, 'w': 1})

In [28]: x
Out[28]: [Counter({'w': 1})]

我原以为 x[Counter({'q': 1, 'w': 1})]。发生了什么事?

最佳答案

仅当 x 具有 __iadd__ 方法时,

x += y 才会影响对 x 的另一个引用。如果它只有 __add__,则 x += y 完全等同于 x = x + ycollections.Counter__iadd__,但有 __add__ 的东西。因此,z += ...z = z + ... 相同,您只是重新定义了 z修改对象。 (我通过使用 help(collections.Counter) 并搜索 __iadd__ 发现了这一点。它没有。)

关于python - 运算符 += 与 collections.Counter 的行为不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35944688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com