ホームページ > バックエンド開発 > Python チュートリアル > Python リストソートの 2 つの方法と例

Python リストソートの 2 つの方法と例

高洛峰
リリース: 2016-10-19 11:33:36
オリジナル
1372 人が閲覧しました

List を並べ替えるには、Python には 2 つの方法があります

方法 1. List の組み込み関数 list.sort を使用して並べ替えます

list.sort(func=None, key=None, reverse=False)

Python の例 :

>>> list = [2,5,8,9,3]  
>>> list  
[2,5,8,9,3]  
>>> list.sort()  
>>> list  
[2, 3, 5, 8, 9]
ログイン後にコピー

方法 2. シーケンス型関数sorted(list)を使用して並べ替えます(2.4以降)

Pythonの例:

>>> list = [2,5,8,9,3]  
>>> list  
[2,5,8,9,3]  
>>> sorted(list)  
[2, 3, 5, 8, 9]
ログイン後にコピー

2つのメソッドの違い:

sorted(list) を返します。式として使用できるオブジェクト。元のリストは変更されず、新しいソートされたリスト オブジェクトが生成されます。

list.sort() はオブジェクトを返さず、元のリストを変更します。

その他の並べ替えの例:

例 1: 順方向並べ替え

>>>L = [2,3,1,4]
>>>L.sort()
>>>L
>>>[1,2,3,4]
ログイン後にコピー

例 2: 逆並べ替え

>>>L = [2,3,1,4]
>>>L.sort(reverse=True)
>>>L
>>>[4,3,2,1]
ログイン後にコピー

例 3: 2 番目のキーワードの並べ替え

>>>L = [('b',6),('a',1),('c',3),('d',4)]
>>>L.sort(lambda x,y:cmp(x[1],y[1])) 
>>>L
>>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)]
ログイン後にコピー

例 4: 2 番目のキーワードを並べ替える

>>>L = [('b',6),('a',1),('c',3),('d',4)]
>>>L.sort(key=lambda x:x[1]) 
>>>L
>>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)]
ログイン後にコピー

例 5: 2 番目のキーワードを並べ替える

>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>import operator
>>>L.sort(key=operator.itemgetter(1)) 
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
ログイン後にコピー

例 6: (DSU メソッド: Decorate-Sort-Undercorate)

>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>A = [(x[1],i,x) for i,x in enumerate(L)] #i can confirm the stable sort
>>>A.sort()
>>>L = [s[2] for s in A]
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
ログイン後にコピー

上記6つのメソッドを提供します例 3.4.5.6 はリスト項目内の特定の項目

を比較キーとしてソートするために使用できます。 効率比較:

cmp < DSU < key

実験的な比較により、方法 3 は次のようになります。メソッド 6 より遅い、メソッド 6 はメソッド 4 より遅い、メソッド 4 とメソッド 5 は基本的に同等です < DSU < key

複数のキーワード比較ソート:

例 7:

>>>L = [(&#39;d&#39;,2),(&#39;a&#39;,4),(&#39;b&#39;,3),(&#39;c&#39;,2)]
>>> L.sort(key=lambda x:x[1])
>>> L
>>>[(&#39;d&#39;, 2), (&#39;c&#39;, 2), (&#39;b&#39;, 3), (&#39;a&#39;, 4)]
ログイン後にコピー

この時点でソートされた L は2 番目のキーワードのみで並べ替えます

2 番目のキーワードを使用して並べ替える場合は、2 つの方法があります

例 8:

>>> L = [(&#39;d&#39;,2),(&#39;a&#39;,4),(&#39;b&#39;,3),(&#39;c&#39;,2)]
>>> L.sort(key=lambda x:(x[1],x[0]))
>>> L
>>>[(&#39;c&#39;, 2), (&#39;d&#39;, 2), (&#39;b&#39;, 3), (&#39;a&#39;, 4)]
ログイン後にコピー

例 9:

>>> L = [(&#39;d&#39;,2),(&#39;a&#39;,4),(&#39;b&#39;,3),(&#39;c&#39;,2)]
>>> L.sort(key=operator.itemgetter(1,0))
>>> L
>>>[(&#39;c&#39;, 2), (&#39;d&#39;, 2), (&#39;b&#39;, 3), (&#39;a&#39;, 4)]
ログイン後にコピー

なぜ例 8 は機能するのでしょうか?その理由は、タプルが左から右に比較されるためです。最初のタプルを比較した後、

が等しい場合、2 番目のタプルを比較します。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート