我成功地隔离了(我认为的)Python 中位数组列表和 XOR 操作之间的奇怪关系。
这是我的最小示例:
ls = [bitarray('0'), bitarray('0')]
ls[0] ^= bitarray('1')
print(ls)
> [bitarray('1'), bitarray('0')]
ls = [bitarray('0')]*2
ls[0] ^= bitarray('1')
print(ls)
> [bitarray('1'), bitarray('1')]
ls = [bitarray('0'), bitarray('0')]
ls[0] = ls[0] ^ bitarray('1')
print(ls)
> [bitarray('1'), bitarray('0')]
我有两个自然问题:
感谢您的帮助!
这与
^=
无关,而是与您创建列表的方式有关。
第一个示例是一个包含对两个单独对象的引用的列表:
>>> ls = [object(), object()]
>>> ls[0] is ls[1]
False
第二个示例是一个列表,其中包含对 same 对象的两个引用:
>>> ls = [object()] * 2
>>> ls[0] is ls[1]
True