Python リストの sort() と例

⚡ スマートサマリー

Python list sort() は、リストの要素をその場で並べ替えます。デフォルトでは昇順、reverse パラメータでは降順で並べ替えます。また、オプションの key 関数を使用すると、長さ、タプルフィールド、ユーザー定義関数などのカスタム基準で並べ替えることができます。

  • 🔘 構文: sort() メソッドは、オプションの key および reverse パラメータを受け取り、コピーを作成せずに元のリストを変更します。
  • ☑️ 注文管理: reverseパラメータをTrueに設定すると、デフォルトの昇順ではなく、値が高い順から低い順にソートされます。
  • キーパラメータ: lenのようなキー関数は、文字列の長さやタプルフィールドなどの派生値に基づいて要素をソートします。
  • 🧪 ソートとソート済み: sort() メソッドはリストをその場で変更して None を返しますが、sorted() メソッドは新しいリストを返し、元のリストを保持します。
  • 🛠️ カスタム条件: ラムダ式とユーザー定義関数を使用すると、sort() 関数は、タプル、辞書、および名前付きタプルを任意の属性で並べ替えることができます。
  • 🤖 AIワークフロー: 機械学習パイプラインは、予測結果をスコア順に並べ替え、ランキングや評価を行う前に上位の結果を選択します。

Python リストソート()

sort()メソッドとは何ですか? Python?

sort() 関数は Python リストを昇順または降順に並べ替えるのに役立ちます。数値リスト、タプル、文字列リストの並べ替えに使用できます。新しいリストを作成するのではなく、元のリストを変更または並べ替えます。

Sortメソッドの構文 Python

ソート関数の構文は以下のとおりです。

List.sort(key=…, reverse=…)

ソート関数には、以下の2つのオプションパラメータがあります。

  • キー:- ソート基準に基づいて関数をソートするために使用されます。
  • Reverse: – 値はtrueまたはfalseのいずれかです。trueの場合、このカスタム関数はリストを降順にソートします。

Sortメソッドを使用してリストを昇順に並べ替える Python

In Pythonデフォルトでは、ソート関数はリストを昇順でソートします。昇順のリストでは、最も低い値が左側に表示され、最も高い値が右側に表示されます。

例:

Python コー​​ド:

base_list=["Google","Reliance","Guru99","Content","Syntax"]
base_list.sort()
print("the base list after sorting is",base_list)

出力:

the base list after sorting is ['Content', 'Google', 'Guru99', 'Reliance', 'Syntax']

Code 説明:

  • 上記のリストは、ランダムに定義された文字列リストです。
  • ソート機能 Python ランダム リストを昇順で並べ替えるのに役立ちます。単語の長さが最も短いものが左側に、単語の長さが最も長いものが右側に表示されます。

リストを降順に並べ替える

ソート機能を使用すると、リストを降順にソートすることもできます。 順序として定義できます ここで、リストは最高値で始まり、最低値で終わります。

降順でソートされたリストを取得するには、sort 関数の reverse パラメーターに true を割り当てます。

以下の例を見てみましょう。

Python コー​​ド:

base_list=[100,600,400,8000,50]
base_list.sort()
print("the base list after sorting is",base_list)
# Reverse Order
base_list.sort(reverse=True)
print("the base list after REVERSE sorting is",base_list)

出力:

the base list after sorting is [50, 100, 400, 600, 8000]
the base list after REVERSE sorting is [8000, 600, 400, 100, 50]

注: 実行時エラーを避けるために、単語「True」のリバースパラメータへの割り当てが大文字の「T」で始まることを確認してください。

Sortメソッドを使用してタプルのリストをソートする Python

Python タプル 順序付けられたシーケンスに従う不変の要素のコレクションです。 Pythonの sort 関数を使用すると、カスタマイズされた関数とラムダ式を使用してタプルのリストをソートできます。

名前を指定せずにカスタム関数を作成し、ラムダ式で表現することもできます。ラムダ式の構文は以下のとおりです。

構文:

Lambda arguments: expression

上記の構文は、以下の Python コードと同等です。

def name (arguments):
return expression

以下に、タプルとカスタマイズされた関数の例を示します。これは、キーパラメータを持つソート関数がタプル内の要素のソートにどのように役立つかを説明するものです。

Python コー​​ド:

base_list = [('Alto', 2020, 500),('MSFT', 2022, 300),('Guru99', 2019, 1070)]
def get_key(base_list):
    return base_list[2]
base_list.sort(key=get_key,reverse=True)
print("The change in base list is as follows",base_list)

出力:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Code 説明:

  • reverse パラメーターは true として定義され、タプルを降順にソートします。
  • カスタマイズされた関数はタプルの XNUMX 番目の要素を受け取ります。
  • ソート機能のキーとして利用されます。

ラムダ式を使用する以下の例を見てみましょう。

Python コー​​ド:

base_list = [('Alto', 2020, 500),
('MSFT', 2022, 300),
('Guru99', 2019, 1070)]
base_list.sort(key=lambda base_list:base_list[2],reverse=True)
print("The change in base list is as follows",base_list)

出力:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

説明:

  • ラムダ式は、タプルの XNUMX 番目の要素としてキーを使用して、タプルの要素を上位から下位に並べ替えるのに役立ちます。
  • プログラムはタプルの XNUMX 番目の要素の最大値をチェックします。

Len をキーパラメータとして使用してリスト項目を並べ替える

Len は、アイテムの長さを決定する組み込み関数です。決定された長さは、ソート関数のインデックスに使用できます。これを行うには、Len を代入します。 Python ソート関数のキーパラメータ。

以下 Python このコードは、Len 関数を sort 関数と共に使用する方法を示しています。

Python Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len)
print("The sorted list based on length:",base_list)

出力:

The sorted list based on length: ['Alto', 'Java', 'Guru99', 'Python', 'Google']

Code 説明:

Len を使用してリスト項目を並べ替える

  • 要素の長さがキーパラメータのインデックスとなり、リストを昇順に並べます。
  • Len 関数は、基本リストに存在する各要素の長さを推定します。
  • 最も短い要素が左側に、最大の要素が右側に保持されます。
  • ここでは、単語 alto と java の長さは 4 であり、リストの最初に配置され、次に Guru99は長さが6です。

この例は、ソート関数におけるreverseパラメータの概念を以下のように示しています。

Python Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len,reverse=True)
print("The sorted list based on length:",base_list)

出力:

The sorted list based on length: ['Guru99', 'Python', 'Google', 'Alto', 'Java']

ユーザー定義関数をキーパラメータとして使用してリスト項目を並べ替える

リストをソートするためのキーパラメータとして、ユーザー定義関数を使用することもできます。以下に例を示します。

Python Code:

base_list = [{'Example':'Python','year':1991},{'Example':'Alto','year':2014},{'Example':'Guru99', 'year':1995},
{'Example':'Google','year':1985},{'Example':'Apple','year':2007},{'Example':'Emails','year':2010},]
def get_year(element):
    return element['year']
base_list.sort(key=get_year)
print("The base list after sorting using explicit criteria",base_list)

出力:

The base list after sorting using explicit criteria [{'Example': 'Google', 'year': 1985}, {'Example': 'Python', 'year': 1991}, {'Example': 'Guru99', 'year': 1995}, {'Example': 'Apple', 'year': 2007}, {'Example': 'Emails', 'year': 2010}, {'Example': 'Alto', 'year': 2014}]

Code 説明:

  • 年を返すユーザー定義関数が作成されます
  • key パラメータは、ユーザー定義関数を基準として受け取ります。
  • ソート機能は、要素「年」の値に基づいてリストを昇順に並べます。

ソート法とソート法の違い Python

上記の例を解いた後、2つのソートツールを直接比較してみると分かりやすいでしょう。違いをまとめる前に、まずSortedメソッドの構文を理解しておきましょう。

Python 構文:

sorted (list_name, reverse=…., key=..)

Code 説明:

  • ソート関数は、リストを昇順または降順にソートします。
  • この関数は XNUMX つのパラメータを受け入れます。そのうち XNUMX つのパラメータはオプションのタイプであり、XNUMX つのパラメータは必須のタイプです。
  • Sorted メソッドを使用する場合は、パラメーター list_name が必要です。
  • Sorted メソッドは、任意のタイプの反復可能なリストを入力として受け取ることができます。
  • キーパラメータとリバースパラメータは、ソートメソッドのオプションパラメータです。 Python.

以下はsortとsorted関数の使用例です。 Python:

Python コー​​ド:

#Use of the Sorted method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=sorted(Base_list)
print("the New list using sorted method is",New_list)
#Use of the Sort method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=Base_list.sort()
print("the New list using sort method is",New_list)

出力:

the original list is [11, 10, 9, 8, 7, 6]
the new list using the sorted method is [6, 7, 8, 9, 10, 11]
the original list is [11, 10, 9, 8, 7, 6]
the new list using the sort method is None

Code 説明:

  • 元のリストは、sorted 関数の必須パラメーターとして渡されます。
  • Sorted メソッドは、元のリストに加えて新しいリストを返します。
  • 追加のパラメーターがsortedメソッドに渡されないため、新しいリストはデフォルトで昇順にソートされます。
  • ソート関数は新しいリストを作成しません。

主な類似点と相違点は以下のとおりです。

ソート機能 ソート機能
ソート機能 Python は、list_name を必須パラメータとして受け取る組み込み関数です。 ソート関数は元のリストをパラメータとして受け取りません。
Sorted メソッドは新しいリストを返します ソート関数が新しいリストを返さない
ソートされた関数は反復可能なリストに使用する必要があります ソート関数は反復不可能なリストに使用する必要があります。
元のリストは変更されず、元のデータを保持できます。 sort 関数は元の関数を変更するため、占有するメモリ領域が少なくなります。

ソート方式またはソート方式をどのような場合に使用するのですか?

レースデータのソートが必要な例を考えてみましょう。 プログラムでは、ゼッケン番号と、レースを終了するまでにかかった時間を秒単位で使用します。

Python コー​​ド:

from collections import namedtuple
Base = namedtuple('Runner', 'bibnumber duration')
blist = []
blist.append(Base('8567', 1500))
blist.append(Base('5234', 1420))
blist.append(Base('2344', 1600))
blist.append(Base('2342', 1490))
blist.append(Base('23444', 1620))
blist.append(Base('6674', 1906))
print("original list",blist)
blist.sort(key=lambda x: getattr(x, 'duration'))
top_five_result = blist[:5]
print("Results using sort function",top_five_result)
r_blist=sorted(blist,key=lambda x: getattr(x, 'duration'))
top_five_result = r_blist[:5]
print("Results using sorted function",top_five_result)

出力:

original list [Runner(bibnumber='8567', duration=1500), Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='23444', duration=1620), Runner(bibnumber='6674', duration=1906)]

Results using sort function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Results using sorted function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Code 説明:

  • 基本リストは、sort 関数とsorted 関数の両方を使用して並べ替えられます。
  • ソート機能が適用されると、ベースリストは失われます。
  • ソート機能は元のデータセットに適用しないでください。 元のデータセットのコピーバージョンがある場合に使用する必要があります。
  • Sorted 関数は元のリストを保持します。 それはオーバーライドされません。
  • これはより良い trac可用性と効果的なデータ管理。

よくあるご質問

sort() メソッドに key=str.lower を渡します。例えば、names.sort(key=str.lower) のように指定します。各文字列は小文字で比較されるため、「Apple」と「banana」は大文字・小文字に関係なくアルファベット順に並びます。最終的なソート済みリストでは、各要素の元の大文字・小文字が保持されます。

すべての数値またはすべての文字列のリストをソートすることはできますが、整数と文字列などの無関係な型を混在させると、TypeError が発生します。 Python それらを比較することはできません。まず、値を同じ比較可能な型に変換するか、比較可能なキーを返すキー関数を渡してください。

Python 従来は、マージソートと挿入ソートを組み合わせたハイブリッドアルゴリズムであるTimsortが使用されていました。バージョン3.11以降は、よりスマートなマージポリシーを持つTimsort派生アルゴリズムであるPowersortが使用されています。どちらも安定しており、最悪の場合でもO(n log n)の時間で動作します。

はい。sort() メソッドは安定ソートなので、等しいと判断された要素は元の相対的な順序を維持します。これにより、複数の基準に基づいて段階的にソートすることができ、重要度の低いキーから順に、最も重要なキーで最後にソートすることが可能です。

sort() メソッドは、最悪の場合と平均的な場合で O(n log n) の時間で実行されます。既に大部分が順序付けられているデータの場合、基となるアルゴリズムが既存のソート済みランを検出して再利用するため、O(n) に近づきます。

比較時に各項目を変換するキーを渡します。例えば、`nums.sort(key=int)`のように指定します。すると、リストは文字ではなく数値でソートされるため、「10」は「9」の後に正しくソートされます。格納された要素は文字列のままで、比較時のみ整数値が使用されます。

ソートは、スコアや確率に基づいて予測を並べ替えたり、ランキングや推薦システムで上位k件の結果を選択したり、データ準備中にレコードを並べ替えたりします。機械学習パイプラインでは、評価前に特徴量やモデル出力をソートすることが多いため、組み込みのsort()メソッドは一般的な前処理ステップです。

はい。GitHub Copilotとエージェント型AIアシスタントは、短いコメントから、キーとなる関数やラムダ式を含むsort()とsorted()の呼び出しを生成します。ループを単一のsort文にリファクタリングすることも可能ですが、順序付けをテストし、エッジケースでの結果を確認することをお勧めします。