Pythonのdel
ステートメントをリストに適用すると、非常に奇妙なことが起こります。問題のリストのエントリを削除するだけでなく、変数が派生したリストの同じ要素を削除するための「バックトラック」も削除します。
例えば:
>>> x
[1, 2, 3, 4, 5]
>>> z=x
>>> del z[1]
>>> z
[1, 3, 4, 5]
>>> x
[1, 3, 4, 5]
つまり、削除をに適用z
しても、削除はに適用されx
ます。この「バックトラッキング」は、他のコマンドや機能を思い付くことはありません。
>>> x=[1,2,3,4,5]
>>> z=x
>>> z+[6]
[1, 2, 3, 4, 5, 6]
>>> x
[1, 2, 3, 4, 5]
add関数をzに適用すると、xは影響を受けません。
これは、私が取り組んでいる削除「NA」スクリプトであらゆる種類の頭痛の種を引き起こしています。del
ステートメントで何が起こっているのか知っていますか?また、この問題を回避して、 z=x
delを設定してから適用しても変更されないようにするz
にはどうすればよいx
ですか?