3

他の言語から来た私は、リストでの Python 変数の割り当て方法について少し混乱しています。例として、次のように言いましょう。

x = [4, 5, 2, 70, 1]
y = x
y.sort()

x と y が出力される場合、結果は両方の変数で同じになります。

x = [1, 2, 4, 5, 70]
y = [1, 2, 4, 5, 70]

この動作はまったく予想していませんでした。リスト y にのみ sort メソッドを適用したため、x のシーケンスは変更されないと思いました。

一方、スライス演算子を使用してリスト x の内容をリスト y に割り当てた場合、(少なくとも私の場合は) 期待どおりの動作が得られます。

x = [4, 5, 2, 70, 1]
y = x[:]
y.sort()

x と y が出力された場合、リスト x は変更されていないことがわかります。

x = [4, 5, 2, 70, 1]
y = [1, 2, 4, 5, 70]

誰かが背後にあるロジックを説明できますか?

ありがとうございました!

4

1 に答える 1

6

スライスはコピーを作成しますが、割り当ては両方のラベルを同じリスト インスタンスにポイントします。並べy替えは、 が指すインスタンスと同じリスト インスタンスを並べ替えますx。または、 を使用y = sorted(x)して、必要な結果を得ることができます。

于 2012-11-12T21:49:13.580 に答える