なぜこの設定操作が変更されますかs
?Pythonの "&=" set演算子が "&="整数演算と異なる動作をするのはなぜですか?
s = set('abc')
t = set('bcd')
u=s
print u, s, t
u &= t
print u, s, t
結果:
set(['a', 'c', 'b']) set(['a', 'c', 'b']) set(['c', 'b', 'd'])
set(['c', 'b']) set(['c', 'b']) set(['c', 'b', 'd'])
それは....
Set操作&=
を(s
を変更)同じ演算子の整数(ビット単位)バージョンと同じように動作しません。ビット操作&=
(s
を変更しない):
s = 7
t = 3
u=s
print u, s, t
u &= t
print u, s, t
結果:
7 7 3
3 7 3
セットは変更可能であり、整数は変更できません。 'frozenset'で試してみてください。 – jonrsharpe
それはfrozensetsと期待どおりに動作します。したがって、操作では、セットu(文の先頭にあるsと同じオブジェクト)をインプレースで変更しようとしていないか、例外が発生しています。それは何をしようとしていますか? –
リストは、&=のセットと同じ動作を示します。タプルは型エラーを引き起こします。 –