Maison  >  Article  >  développement back-end  >  tri python sort() et sorted()

tri python sort() et sorted()

高洛峰
高洛峰original
2017-02-13 17:29:581597parcourir

Exemples d'application :

1. Générer une séquence selon l'alphabet

2 Trier plusieurs champs d'enregistrements, etc.

Fonctions de tri couramment utilisées :

sort()

sorted()

Comparaison :

1. sorted() a une gamme d'applications plus large

sorted(iterable[. , cmp[ , key[, reverse]]])

s.sorted([cmp[, key[, reverse]]])

Exemple :

> >> ; personnes = [{'name':'Jon','age': 32}, {'name':'Alan','age': 50}, {'name': 'Bob', 'age ':23 }]

>>> trié(personnes, key=lambda x: (x['name'], -x['age']))
[{'age': 50 , 'nom' : 'Alan'}, {'age' : 23, 'nom' : 'Bob'}, {'age' : 32, 'nom' : 'Jon'}]

triés( ) peut être utilisé N'importe quel objet itérable, sort() fonctionne généralement sur la liste

>>> a = (1,2,4,2,3)

>>> a.sort( )
Traceback (dernier appel le plus récent) :
Fichier "", ligne 1, dans
AttributeError : l'objet 'tuple' n'a pas d'attribut 'sort'
> ;>> sorted(a)
[1, 2, 2, 3, 4]

2. la liste originale reste inchangée, sort() modifie directement la liste originale.

sort() consomme moins de mémoire et est plus efficace car il n'a pas besoin de copier la liste d'origine

>>> ',3, 7,'n']

>>> trié(a)
[1, 3, 7, '1', 'a', 'n']
> >> une
['1', 1, 'a', 3, 7, 'n']
>>> a
[1, 3, 7, '1', 'a', 'n']

3. Pour les fonctions sort() et sorted(), l'entrée Le paramètre key est supérieur au paramètre cmp Haute efficacité. La fonction transmise par cmp est appelée plusieurs fois pendant tout le processus de tri, ce qui coûte cher ; la clé n'est traitée qu'une seule fois pour chaque élément.

>>> depuis timeit import Timer

>>> Timer(stmt="sorted(xs,key=lambda x:x[1])",setup="xs =range(100);xs=zip(xs,xs);").timeit(10000)

0.35391712188720703
>>> : cmp(a[1],b[1]))" ,setup="xs=range(100);xs=zip(xs,xs);").timeit(10000)
0.4931659698486328

4.sorted() peut trier une variété de structures de données

Dictionnaire :

Trier les numéros de téléphone du répertoire par taille numérique

> ;>> Bob':'9345','Carol':'5834'}

>>> de l'opérateur import itemgetter

> >> (1))
>>> sorted_pb
[('Carol', '5834'), ('Linda', '7750'), ('Bob', '9345')]

Liste multidimensionnelle :

Tri multi-champs des notes et des notes

>>> depuis l'opérateur import itemgetter

>>> 'Bob',95.00,'A'],['Alan',86.0,'C'],['Mandy',82.5,'A'] ,['Rob',86,'E']]

>>> trié(gameresult, key=itemgetter(2, 1))
[['Mandy', 82.5, 'A'] , ['Bob', 95.0, 'A'], ['Alan ', 86.0, 'C'], ['Rob', 86, 'E']]

Liste mixte dans le dictionnaire :

>>> :['M',7],

... 'Zhang' : ['E',2],

... 'Wang' :['p',3],
.. 'Du':['C',2]}
>>> de l'opérateur import itemgetter
>>> trié(mydict.iteritems(),key=lambda(k,v ):operator.itemgetter(1)(v))
[('Zhang', ['E', 2]), ('Du' , ['C', 2]), ('Wang', [ 'p', 3]), ('Li', ['M', 7])]

Dictionnaire mixte dans la liste :

Trier plusieurs valeurs clés ​​note et nom

>>> gameresult = [{"name":"Bob","wins":10, "losses":3,"rating":75.00},

... {"name": "David", "wins": 3, "loses": 5, "rating": 57.00}]

>>> de l'opérateur import itemgetter
>> ;> trié(gameresult,key=itemgetter("rating","name"))
[{'gagne' : 3, 'rating' : 57,0, 'name' : 'David', 'perd' : 5 }, {'wins' : 10, 'losses' : 3, 'name' : 'Bob', 'rating' : 75.0}]
> ;>>

Pour plus de tri python () et articles liés sorted(), veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn