sorted関数
2851 ワード
ソートもプログラムでよく使われるアルゴリズムです.バブルソートを使用しても高速ソートを使用しても、ソートのコアは2つの要素のサイズを比較することです.数字なら直接比較できますが、文字列か2つのdictなら?数学の大きさを直接比較するのは意味がないので,比較の過程は関数によって抽象化しなければならない.
Pythonに内蔵されている
さらに、
その後、
デフォルトでは、文字列のソートは、ASCIIのサイズで比較されます.
次に、ソートは大文字と小文字を無視し、アルファベット順にソートすることを提案します.このアルゴリズムを実装するには、既存のコードを変更する必要はありません.key関数を使用して文字列を大文字と小文字のソートを無視するようにマッピングできればいいです.大文字と小文字を無視して2つの文字列を比較するのは、実際には文字列を大文字(または小文字)にしてから比較します.
これにより、
逆ソートを行うには、key関数を変更する必要はありません.3番目のパラメータ
結果:
Pythonに内蔵されている
sorted()
関数はリストをソートできます.sorted([36, 5, -12, 9, -21])
さらに、
sorted()
関数も高次関数であり、key
関数を受信してカスタムソートを実現することもできます.たとえば、絶対値サイズでソートします.sorted([36, 5, -12, 9, -21], key=abs)
key list , key 。 list key=abs list:
その後、
sorted()
関数はkeysに従ってソートされ、対応関係に従ってlist対応要素が返されます.デフォルトでは、文字列のソートは、ASCIIのサイズで比較されます.
'Z' < 'a'
の結果、大文字Z
が小文字a
の前に表示されます.次に、ソートは大文字と小文字を無視し、アルファベット順にソートすることを提案します.このアルゴリズムを実装するには、既存のコードを変更する必要はありません.key関数を使用して文字列を大文字と小文字のソートを無視するようにマッピングできればいいです.大文字と小文字を無視して2つの文字列を比較するのは、実際には文字列を大文字(または小文字)にしてから比較します.
これにより、
sorted
にkey関数を入力すると、大文字と小文字を無視したソートが実現されます.sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)
逆ソートを行うには、key関数を変更する必要はありません.3番目のパラメータ
reverse=True
に入力できます.sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
def by_name(t):
return t[0].lower()
L2 = sorted(L, key=by_name)#
print(L2)
def by_score(t):
return t[1]
L2 = sorted(L,key=by_score,reverse=True)#
print(L2)
結果:
[('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)]
[('Adam', 92), ('Lisa', 88), ('Bob', 75), ('Bart', 66)]