`sorted(list)` と `list.sort()` の違いは何ですか? 質問する

`sorted(list)` と `list.sort()` の違いは何ですか? 質問する

list.sort()リストをソートして元のリストを置き換えますが、 はsorted(list)元のリストを変更せずに、ソートされたリストのコピーを返します。

  • どちらが優先されるのでしょうか?
  • どちらがより効率的でしょうか? どの程度でしょうか?
  • list.sort()実行後にリストを未ソートの状態に戻すことはできますか?

使ってくださいこれらのリスト操作 (メソッド) が結果のリストではなく None を返すのはなぜですか?質問を閉じるには、 または別のステートメントを.sort()使用するのではなく、の結果を誤って割り当てます。適切なデバッグを行うと、 がを返したことが明らかになりますが、その時点で「なぜ?」が残る質問です。sorted.sort()None

ベストアンサー1

sorted()元のリストに影響を与えずに、新しいソートされたリストを返します。list.sort()リストをインプレースでソートし、リストのインデックスを変更して、戻りますNone(すべてのインプレース操作と同様に)。

sorted()リストだけでなく、任意の反復可能オブジェクトで動作します。文字列、タプル、辞書 (キーを取得します)、ジェネレーターなど、すべての要素を含むソートされたリストを返します。

  • list.sort()リストを変更する場合、sorted()新しいソートされたオブジェクトを戻したい場合に使用します。まだsorted()リストではなく、反復可能なものをソートする場合に使用します。

  • リストの場合、コピーを作成する必要がないため、list.sort()よりも高速です。その他の反復可能オブジェクトの場合、選択の余地はありません。sorted()

  • いいえ、元のポジションを取得することはできません。一度呼び出すと、list.sort()元の注文は消えてしまいます。

おすすめ記事