予期しないリストの突然変異
v = [0,0,0,0,0,0,0,0 のようなリストを作成する場合,0] の場合、新しいリストを変数に代入すると別の参照が作成されると考えるかもしれません。ただし、次のようなコードは予期しない動作を示す可能性があります:
vec = v
vec[5] = 5
vec と v の両方のインデックス 5 に値 5 が含まれています。なぜこのようなことが起こるのですか?
参照割り当て
Python では、リストは変更可能なオブジェクトです。 vec = v を代入しても、リストの新しいコピーは作成されません。代わりに、v への参照を割り当てます。vec と v は両方とも、メモリ内の同じ基になるリスト オブジェクトを指します。
vec または v のいずれかに加えられた変更は、同じリストであるため、元のリストに影響します。これが、vec[5] が変更されると v も変更される理由です。
Solution
リストの別のコピーを作成するには、 list() 関数を使用します。
vec = list(v)
これにより、v の要素のコピーを含む新しいリスト オブジェクトが作成されます。vec に加えられた変更は v には影響せず、その逆も同様です。 .
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3