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

tri python sort() et sorted()

高洛峰
Libérer: 2017-02-13 17:29:58
original
1621 Les gens l'ont consulté

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 !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal