2

私は数日前に Python の学習を始めました (以前のプログラミング経験も知識もありません) が、現在、理解できない次のことで立ち往生しています: 並べ替えられていないリスト "b" があり、リスト "c" を並べ替えたいとしましょう。リスト「b」とまったく同じように見えます:

b = [4,3,1,2]
c=b
c.sort()

print b
print c

私が発見したのは、b と c の両方がソートされていることです: [1,2,3,4] [1,2,3,4]

どうしてこんなことに?

「b」リストのコピーを作成すると、このソリューションは完全に機能するようです。

b = [4,3,1,2]
c=b[:]
c.sort()

print b
print c

結果: [4,3,1,2] [1,2,3,4]

しかし、なぜ最初の解決策がうまくいかないのでしょうか?

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

4

3 に答える 3

4

c = bとは違うことはもうお分かりですねc = b[:]。最初のケースcでは、 と同じオブジェクトを参照しますb。後者では、 のコピーを参照しますb

b.sort()したがって、 sinceが によって参照されるリストをソートすることは驚くべきことではありませんb。調べると、同じオブジェクトcであるため、それもソートされます。

ソートされたリストを元のリストから分離する通常の方法は次のとおりです。

c = sorted(b)
于 2013-05-19T00:45:11.603 に答える
2

最初のソリューションではbc両方が同じオブジェクトを指しているためです。2 番目のソリューションのスライスでは、古いオブジェクトと同じ内容の新しいオブジェクトが作成されます。

于 2013-05-19T00:15:24.783 に答える