Pythonのリスト sort() メソッドは、要素を昇順/降順/ユーザ定義順にソートします。
Pythonソートリスト
要素をソートするための様々なテクニックを以下に示します。
- リストを昇順にソートする
- リストを降順にソートする
- ユーザー定義の順序でリストをソートする
- オブジェクトのリストをソートする
- キーを使用したリストの並べ替え
この記事もチェック:Pythonによるバブルソートの昇順、降順の実装方法とコードを解説する
1. リストの要素を昇順にソートする
sort()` 関数は、リストの要素を昇順にソートするために用いる。
input = [1.2, 221, 0.025, 0.124, 1.2]
print(f'Before sorting of elements: {input}')
input.sort()
print(f'After sorting of elements: {input}')
|
結果は以下の通りです。
Before sorting of elements: [1.2, 221, 0.025, 0.124, 1.2]
After sorting of elements: [0.025, 0.124, 1.2, 1.2, 221]
この記事もチェック:Pythonのsample関数を使ってリストからランダムに要素を抽出する方法
2. リストの要素を降順にソートする
リストの要素を降順にソートするには、reverseパラメータを用います。
シンタックスは以下の通りです。
リスト名.sort(reverse=True)` とします。
input = [8, 1, 12, 0]
input.sort(reverse = True)
print(input)
|
結果は以下の通りです。
[12, 8, 1, 0]
3. Python key関数を使ったリストのソート
Pythonでは、key関数をパラメータとして、リストの要素をソートすることができます。
キー関数の出力に基づいて、リストがソートされます。
# takes third element for sortdef third_element(x):
return x[2]
input = [(2, 2, 1), (3, 4, 9), (4, 1, 0), (1, 3, 7)]
# sort list with keyinput.sort(key=third_element)
# prints sorted listprint('Sorted list:', input)
|
結果は、以下の通りです。
Sorted list: [(4, 1, 0), (2, 2, 1), (1, 3, 7), (3, 4, 9)]
4. ユーザー定義の並び順でリストをソートする
# takes third element for sortdef third_element(x):
return x[2]
input = [(2, 2, 1), (3, 4, 9), (4, 1, 0), (1, 3, 7)]
# sorts list with key in ascending orderinput.sort(key=third_element)
# prints sorted listprint('Sorted list in ascending order:', input)
# sorts list with key in descending orderinput.sort(key=third_element, reverse=True)
print('Sorted list in descending order:', input)
|
結果を出力すると、以下の様になります。
Sorted list in ascending order: [(4, 1, 0), (2, 2, 1), (1, 3, 7), (3, 4, 9)]
Sorted list in descending order: [(3, 4, 9), (1, 3, 7), (2, 2, 1), (4, 1, 0)]
5. オブジェクトのリストのソート
sort()関数を使用してカスタムオブジェクトのリストをソートするためには、オブジェクトのフィールドを指定したキー関数を指定して同じことを実現する必要があります。
class Details:
def __init__(self, name, num):
self.name = name
self.num = num
def __str__(self):
return f'Details[{self.name}:{self.num}]'
__repr__ = __str__
D1 = Details('Safa', 12)
D2 = Details('Aman', 1)
D3 = Details('Shalini', 45)
D4 = Details('Ruh', 30)
input_list = [D1, D2, D3, D4]
print(f'Before Sorting: {input_list}')
def sort_by_num(details):
return details.num
input_list.sort(key=sort_by_num)
print(f'After Sorting By Number: {input_list}')
|
を出力します。
Before Sorting: [Details[Safa:12], Details[Aman:1], Details[Shalini:45], Details[Ruh:30]]
After Sorting By Number: [Details[Aman:1], Details[Safa:12], Details[Ruh:30], Details[Shalini:45]]
まとめ
このように、リスト内の要素をソートするための様々なテクニックを理解することができました。