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 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]]
まとめ
このように、リスト内の要素をソートするための様々なテクニックを理解することができました。