みんな、私がなんとか出力したこの奇妙な振る舞いを理解するのを手伝ってください。
>>> a = [1, 4, 3, 2]
>>> a
[1, 4, 3, 2]
>>> b = a.sort()
>>> a
[1, 2, 3, 4]
>>>
「b = a.sort()」がリスト「a」をソートするのはなぜですか?
みんな、私がなんとか出力したこの奇妙な振る舞いを理解するのを手伝ってください。
>>> a = [1, 4, 3, 2]
>>> a
[1, 4, 3, 2]
>>> b = a.sort()
>>> a
[1, 2, 3, 4]
>>>
「b = a.sort()」がリスト「a」をソートするのはなぜですか?
a.sort()
IN-PLACE をソートします。これは、 の内容a
が変更されたことを意味します。
さらにb
、None
あなたが探しているのはb = sorted(a)
、のコンテンツのソートされたコピーを作成し、a
それをbに保存することだと思います
>>> a = [1,4,3,2]
>>> b = sorted(a)
>>> a
[1, 4, 3, 2]
>>> b
[1, 2, 3, 4]
>>> b = a.sort()
>>> a
[1, 2, 3, 4]
>>> b
>>>
a.sort()
のソートされた内容をソートしa
て割り当てます(これは、IN-PLACE のソートの意味のようなものです)。したがって、戻り値はありません (これは の戻り値と同じです。 Soが呼び出され、これは IN-PLACE をソートし、そのようなソートの戻り値 (これは) を取り、その戻り値を(したがって、なし)。a
a
None
a.sort()
None
b
b
を実行するとb=a.count(2)
、a.count(2)
が呼び出され、整数 (この場合は1
) が返されます。この戻り値は に割り当てられます。これにより、値が含まれるb
ようになります。b
2
>>> a = [1,4,3,2]
>>> a.count(2)
1
>>> b = a.count(2)
>>> b
1
>>>
同様に、 を実行するとb=a.sort()
、a.sort()
が呼び出され ( IN-PLACEa.sort()
の項目をソートする呼び出し)、 が返されます。この戻り値は に割り当てられます。a
None
b
さて、上記の例では、呼び出しの戻り値が何にも代入されていないという事実にもかかわらず、依然としてina.count(2)
の出現回数をカウントしています。これは、結果が何にも割り当てられていないにもかかわらず、並べ替えの背後にある正確なロジックです。2
a
a.count(2)
a.sort()
a