Pythonソートのsorted

3531 ワード

Pythonはlist反復シーケンスのソートに2つの方法を提供します.
  • listのメンバー関数sort()ソート
  • 内蔵関数sorted()並べ替え以上の2つの関数の違いは、1つの事内蔵関数、1つはlistメンバー関数のほか、主に以下の違いがある:
  • sortedはsortより柔軟で、ソート方法は
  • 豊富です.
  • sortedは新しいリストを生成し、sortはその場でリストを並べ替える
  • である.
    sorted()の公式定義:
    >>> help(sorted)
    Help on built-in function sorted in module __builtin__:
    sorted(...)
    sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
    
  • iterable:反復可能シーケンス
  • cmp:比較に使用される関数で、keyによって決定されるものを比較し、デフォルト値、反復セットの1つがあります.
  • key:リスト要素のある属性をcmp関数でキーワードとして使用し、デフォルト値、反復集合の1つがあります.
  • reverse:昇順配列、デフォルトは昇順
  • 次に例を挙げて説明します.
  • sortソート>>L=[5,2,4,1,3]>>L.sort()>>L[1,2,3,4,5]
  • sortedソート>>L=[5,2,4,1,3]>>sorted(L)[1,2,3,4,5]
  • sortedメソッドのreverse>>L=[5,2,4,1,3]>>sorted(L,reverse=True)[5,4,3,2,1]
  • sorted方法のcmp:>>>>>>L=[('b',2),('a',1),('c',3),('d',4)]>>>>>>>>>>>>>>>>>>>[('b',2),('a',,('c',4)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>,('f',5),('e',3),('d',4),('c',1)]>>sorted(L,key=lambda x:x[0])[('b',2),('c',1),('d',4),('e',3),('f',5)] >>> sorted(L,key=lambda x:x[1]) [('c', 1), ('b', 2), ('e', 3), ('d', 4), ('f', 5)]
  • sortedメソッドのkey:listを2番目のキーワードでソートし、最初のキーワードでソート>>L=[('b',2),('f',5),('e',3),('d',4),('c',1)]>>>sorted(L,key=lambdax:(x[1],x[0])))[('c',1),('b',2),('e',3),('d',4),('f',5)]
  • sortedメソッドdictソート>>import operator>>x={1:2,3:4,4:3,2:1,0:0}>>sorted(x.iteritems()、key=operator.itemgetter(1)) [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)] >>> sorted(x.iteritems(), key=operator.itemgetter(0)) [(0, 0), (1, 2), (2, 1), (3, 4), (4, 3)]
  • x.items()は、すべての辞書の項目をリスト形式で返し、x.iteritems()は反復器
  • を返します.
  • operator.itemgetter:operatorモジュールが提供するitemgetter関数は、オブジェクトのどの次元のデータを取得するために使用され、パラメータは、>>a=[1,2,3]>>b=operatorのようないくつかのシーケンス番号(すなわち、取得する必要があるデータのオブジェクト内のシーケンス番号)である.itemgetter(1)/定義関数b,取得対象の1番目のドメインの値>>b(a)2備考:operator.itemgetter関数は値ではなく、オブジェクトに作用して値を取得する関数を定義します.
  • sorted対dictを含むlistソート>>>>x=[{'name':'Homer',' age':39},{'name':' Bart','age':10}]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>sorted(x,key=operator.itemgeter('age':10,'name':' name':' Bart'},{'name':':' Bart'},{'age':39,'name':' Homer'}>>>>>>>>>>>>>>>>>>>>>>>>>>>>ue)[{'age':39,'name':'Homer'},{'age':10,'name':'Bart'}]
  • 以上がPythonのリストソートです.