Maison  >  Article  >  développement back-end  >  Deux méthodes et exemples de tri de liste Python

Deux méthodes et exemples de tri de liste Python

不言
不言original
2018-04-18 11:18:592155parcourir

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]


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]


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]


Exemple 2 : Tri inversé


>>>L = [2,3,1,4]
>>>L.sort(reverse=True)
>>>L
>>>[4,3,2,1]


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)]


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)]


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)]


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)]


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)]
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)]
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)]

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!

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