Python でリストのリストを並べ替える

Samyak Jain 2023年10月10日
  1. Python でオペレーターモジュールの itemgetter() 関数を sorted() 関数と一緒に使用してリストのリストを並べ替える
  2. Python で lambda 式を sorted() 関数と一緒に使用してリストのリストを並べ替える
  3. Python で sort() 関数を使用してリストのリストを並べ替える
Python でリストのリストを並べ替える

リストは、Python で使用される最も強力なデータ構造の 1つです。要件に基づいてすべての要素を昇順または降順で配置することにより、Python でリストを並べ替えることができます。

Python でネストされたリストを作成することもできます。これらはリストのリストと考えることができます。リストのリストを並べ替えると、キーとして指定されたインデックスに従ってすべての内部リストが配置されます。

このチュートリアルでは、いくつかのインデックスに基づいて Python のリストのリストを並べ替えます。

Python でオペレーターモジュールの itemgetter() 関数を sorted() 関数と一緒に使用してリストのリストを並べ替える

関数 sorted() は、Python でリストを並べ替えるために使用されます。デフォルトでは、リストを昇順で並べ替えます。オペレータモジュールの関数 itemgetter() は、パラメータとしてインデックス番号を受け取り、そのインデックス番号に配置されたデータセットから要素を返します。

したがって、関数 sorted(List_name, key=itemgetter(index_number)) は、各内部リストの指定された index_number に配置された要素によってリストのリストをソートします。

例えば、

from operator import itemgetter

A = [[10, 8], [90, 2], [45, 6]]
print("Sorted List A based on index 0: % s" % (sorted(A, key=itemgetter(0))))
B = [[50, "Yes"], [20, "No"], [100, "Maybe"]]
print("Sorted List B based on index 1: % s" % (sorted(B, key=itemgetter(1))))

出力:

Sorted List A based on index 0: [[10, 8], [45, 6], [90, 2]]
Sorted List B based on index 1: [[100, 'Maybe'], [20, 'No'], [50, 'Yes']]

リストのリストを降順でソートするには、reverse パラメーターを key パラメーター、および sorted() 関数のリスト名とともに使用します。

例えば、

from operator import itemgetter

C = [[10, 8, "Cat"], [90, 2, "Dog"], [45, 6, "Bird"]]
print(
    "Reversed sorted List C based on index 1: % s"
    % (sorted(C, key=itemgetter(1), reverse=True))
)

出力:

Reverse sorted List C based on index 1: [[10, 8, 'Cat'], [45, 6, 'Bird'], [90, 2, 'Dog']]

Python で lambda 式を sorted() 関数と一緒に使用してリストのリストを並べ替える

lambda 式は、Python の単純な 1 行関数です。

関数 sorted(List_name, key=lambda x:x[index_number]) は、各内部リストの指定された index_number に配置された要素によってリストのリストをソートするために使用されます。

例えば、

A = [[100, "Yes"], [40, "Maybe"], [60, "No"]]
print("Sorted List A based on index 0: % s" % (sorted(A, key=lambda x: x[0])))
B = [[2, "Dog"], [0, "Bird"], [7, "Cat"]]
print("Sorted List A based on index 1: % s" % (sorted(B, key=lambda x: x[1])))

出力:

Sorted List A based on index 0: [[40, 'Maybe'], [60, 'No'], [100, 'Yes']]
Sorted List B based on index 1: [[0, 'Bird'], [7, 'Cat'], [2, 'Dog']]

同様に、reverse パラメーターを使用して、出力を降順で取得できます。

例えば、

C = [[60, 5], [90, 7], [30, 10]]
print(
    "Reversed sorted List C based on index 0: % s"
    % (sorted(C, key=lambda x: x[0], reverse=True))
)

出力:

Reversed sorted List C based on index 0: [[90, 7], [60, 5], [30, 10]]

Python で sort() 関数を使用してリストのリストを並べ替える

sort() メソッドは、各内部リストの最初の要素に従って Python のリストのリストを並べ替えます。このメソッドは、元のリスト自体に変更を加えます。reverse パラメータを使用して降順で並べ替えます。

例えば、

A = [[55, 90], [45, 89], [90, 70]]
A.sort()
print("New sorted list A is % s" % (A))
A.sort(reverse=True)
print("New reverse sorted list A is % s" % (A))

出力:

New sorted list A is [[45, 89], [55, 90], [90, 70]]
New reverse sorted list A is [[90, 70], [55, 90], [45, 89]]

内部リストの長さに従って指定されたリストをソートするには、key=len パラメーターを使用します。

例えば、

A = [[5, 90, "Hi", 66], [80, 99], [56, 32, 80]]
A.sort(key=len)
print("New sorted list A is % s" % (A))

出力:

New sorted list A is [[80, 99], [56, 32, 80], [5, 90, 'Hi', 66]]

関連記事 - Python List