Pythonでリストを昇順、降順に並び替え(ソート)する方法

スポンサーリンク

Pythonのリスト sort() メソッドは、要素を昇順/降順/ユーザ定義順にソートします。

スポンサーリンク

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]

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 sort
def third_element(x):
    return x[2]
 
 
input = [(2, 2, 1), (3, 4, 9), (4, 1, 0), (1, 3, 7)]
 
# sort list with key
input.sort(key=third_element)
 
# prints sorted list
print('Sorted list:', input)

結果は、以下の通りです。

Sorted list: [(4, 1, 0), (2, 2, 1), (1, 3, 7), (3, 4, 9)]

4. ユーザー定義の並び順でリストをソートする

# takes third element for sort
def 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 order
input.sort(key=third_element)
 
# prints sorted list
print('Sorted list in ascending order:', input)
 
# sorts list with key in descending order
input.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]]

まとめ

このように、リスト内の要素をソートするための様々なテクニックを理解することができました。

タイトルとURLをコピーしました