Deux méthodes et exemples de tri de liste Python

不言
Libérer: 2018-04-18 11:18:59
original
2175 Les gens l'ont consulté

Cet article présente principalement deux méthodes et exemples de tri de liste Python. Il a une très bonne valeur de référence. Regardons-le ensemble

Pour trier la Liste, Python propose deux méthodes

Méthode 1. .Utilisez la fonction intégrée list.sort de List pour trier

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

Exemple Python :


>>> list = [2,5,8,9,3] 
>>> list 
[2,5,8,9,3] 
>>> list.sort() 
>>> list 
[2, 3, 5, 8, 9]
Copier après la connexion


Méthode 2. Utilisez la fonction de type séquence sorted(list) pour trier (à partir de 2.4 )

Exemples Python :


>>> list = [2,5,8,9,3] 
>>> list 
[2,5,8,9,3] 
>>> sorted(list) 
[2, 3, 5, 8, 9]
Copier après la connexion


Deux types La différence entre les méthodes :

sorted(list) renvoie un objet qui peut être utilisé comme expression. La liste d'origine reste inchangée et un nouvel objet de liste triée est généré.

list.sort() ne renverra pas d'objets et ne modifiera pas la liste d'origine.

Autres exemples de tri :

Exemple 1 : Tri direct


>>>L = [2,3,1,4]
>>>L.sort()
>>>L
>>>[1,2,3,4]
Copier après la connexion


Exemple 2 : Tri inversé


>>>L = [2,3,1,4]
>>>L.sort(reverse=True)
>>>L
>>>[4,3,2,1]
Copier après la connexion


Exemple 3 : Tri du deuxième mot-clé


>>>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)]
Copier après la connexion


Exemple 4 : Trier le deuxième mot-clé


>>>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)]
Copier après la connexion


Exemple 5 : Tri du deuxième mot-clé à droite


>>>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)]
Copier après la connexion


Exemple 6 : (Méthode DSU : Décorer-Trier- Undercorer)


>>>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)]
Copier après la connexion


Ce qui précède donne 6 méthodes de tri de la liste, parmi lesquelles l'exemple 3.4.5.6 peut Il est utilisé pour trier un certain élément dans l'élément de liste

comme clé de comparaison

Comparaison d'efficacité :

Clé cmp < comparaison expérimentale, la méthode 3 est plus lente que la méthode 6, la méthode 6 est plus lente que la méthode 4, la méthode 4 et la méthode 5 sont fondamentalement équivalentesMots clés multiples Tri par comparaison :

Exemple 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)]
Copier après la connexion
On voit que ce L trié n'est trié que par le deuxième mot-clé

<🎜. > Et si nous voulons trier par le deuxième mot-clé puis trier par le premier mot-clé ? Il existe deux manières Méthode

Exemple 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)]
Copier après la connexion
Exemple 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)]
Copier après la connexion

Pourquoi l'instance 8 fonctionne-t-elle ? La raison en est que les tuples sont comparés de gauche à droite. Après avoir comparé le premier, s'ils sont égaux, comparez le second

Recommandations associées : La méthode de tri des tuples imbriqués dans l'objet liste python à l'aide de sort

La méthode de tri lorsque l'élément de la liste python est un tuple

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en 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