Pythonのリストsort()関数の詳しい説明

「著者ホームページ」:Shibie Sanri wyx
「著者プロフィール」: CSDN top100、Alibaba Cloud Blog Expert、Huawei Cloud Sharing Expert、ネットワークセキュリティ分野の高品質クリエイター
「おすすめコラム」: Xiaobai Zero Basic 「Python 初心者からマスターまで」

sort() はリストを「ソート」できます

文法

list.sort( key, reverse )

パラメータ

  • key : (オプション) 照合順序を指定します
  • reverse : (オプション) 昇順、降順

戻り値

  • 元のリストをソートするときに None を返します。つまり戻り値はありません

例: リスト内の要素を並べ替える

list1 = [1, 3, 2, 5]
list1.sort()
print(list1)

出力:

[1, 2, 3, 5]

1. 昇順と降順

reverseパラメータは「昇順」「降順」の並べ替えを制御します。True は降順、False は昇順を意味します。デフォルトは昇順です。reverse=False

list1 = [1, 3, 2, 5]
list1.sort(reverse=True)
print(list1)
list1.sort(reverse=False)
print(list1)
list1.sort()
print(list1)

出力:

[5, 3, 2, 1]
[1, 2, 3, 5]
[1, 2, 3, 5]

2.sort()とsorted()の違い

sort()の戻り値を受け取ります。これは None であることがわかります。

list1 = [1, 3, 2, 5]
list2 = list1.sort()
print(list2)

出力:

None

ソート前後の「メモリアドレス」を出力すると、アドレスが変わっていないことがわかります。

list1 = [1, 3, 2, 5]
print(id(list1))
list1.sort()
print(id(list1))

出力:

2361470487744
2361470487744

sort()の設計上の考え方は、新しいリストを返すのではなく、元のリストを「変更」することです。新しいリストは作成されないため、「効率」が節約されますもちろんこれは元のリストが変更されたことも意味します。この点; sorted()は、 sort()の拡張関数であり、元のリストを変更せずにリストの要素を並べ替えることができます。


list1 = [1, 3, 2, 5]
list2 = sorted(list1)
print(list1)
print(list2)

出力:

[1, 3, 2, 5]
[1, 2, 3, 5]

結果からわかるように、sorted() はソートされたリストを保持する新しいリストを作成します。


3. スライスの選別

元のリストの「スライス」を新しいリストにコピーしてから、新しいリストを並べ替えることでも、元のリストを変更せずに並べ替えを行うことができます。

list1 = [1, 3, 2, 5]
list2 = list1[:]
list2.sort()
print(list1)
print(list2)

出力:

[1, 3, 2, 5]
[1, 2, 3, 5]

直接の「代入」方法は受け入れられません。値を代入すると、2 つのリストが同じメモリ アドレスを指し、元のリストが同期して変更されるためです。

list1 = [1, 3, 2, 5]
list2 = list1
list2.sort()
print(list1)
print(list2)

出力:

[1, 2, 3, 5]
[1, 2, 3, 5]

4. 並べ替えルールを指定する

keyパラメータでは並べ替えの「ルール」を指定できます。

4.1、文字列の長さによるソート

要素がすべて文字列である「リスト」の場合、文字列の「長さ」でソートできます。

list1 = ['aaaaa', 'aa', 'aaaa', 'a']
list1.sort(key=len)
print(list1)

出力:

['a', 'aa', 'aaaa', 'aaaaa']

基本的に、文字列の len() 関数を使用して長さを計算し、並べ替えます。len() 関数を使用せずに int 列に要素がない場合は、エラーが報告されます。 TypeError: object of type 'int ' には len() がありません。

ここに画像の説明を挿入


4.2、2文字目でソート

要素がすべて文字列であるリストの場合、要素の「文字」に従って並べ替えることができます

list1 = ['cb', 'fa', 'zd', 'ec']
list1.sort(key=lambda x: x[1])
print(list1)

出力:

['fa', 'cb', 'ec', 'zd']

すべての要素の文字長が十分である必要があることに注意してください。たとえば、要素に 1 文字しかなく、2 番目の文字に従ってソートされている場合、関数が 2 番目の文字を見つけることができない場合、エラーが報告されます IndexError:文字列インデックスが範囲外です

ここに画像の説明を挿入


4.3. n 番目に大きい要素を見つける

最初に降順し、次に"index"に従って値を取得すると、リスト内の 1 番目または 2 番目に大きい値などを取得できます。

list1 = [4, 3, 9, 6, 1]
list1.sort(reverse=True)
print('最大的元素:', list1[0])
print('第二大的元素:', list1[1])

出力:

最大的元素: 9
第二大的元素: 6

5. その他の種類の並べ替え

sort()はリストのみをソートでき、sorted() は反復可能なオブジェクトをソートできるため、文字列、タプル、辞書などをソートしたい場合は、sorted()を使用できます。

str1 = "312"
print(sorted(str1))

tuple1 = (5, 1, 3)
print(sorted(tuple1))

dict1 = {
    
    "key1": 1, "key2": 2}
print(sorted(dict1))

出力:

['1', '2', '3']
[1, 3, 5]
['key1', 'key2']

出力結果から、文字列、タプル、および辞書型が並べ替えられた後、返されるリストの型は であり、辞書は値ではなくキーのみを並べ替えていることがわかります。

おすすめ

転載: blog.csdn.net/wangyuxiang946/article/details/131625625