Maison  >  Article  >  développement back-end  >  Explication détaillée de deux exemples de méthodes de tri de liste Python

Explication détaillée de deux exemples de méthodes de tri de liste Python

高洛峰
高洛峰original
2017-03-17 16:39:371937parcourir

Pour trier la Liste, Python propose deux méthodes

Méthode 1. Utilisez la fonction intégrée de Liste liste.tri Tri

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)

Exemple Python :

>>> list = [2,5,8,9,3]  
>>> list  
[2,5,8,9,3]  
>>> sorted(list)  
[2, 3, 5, 8, 9]

La différence entre les deux méthodes :

sorted(list) renvoie un objet, qui peut être utilisé comme une 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 : Trier les 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 : Trier le deuxième mot-clé
>>>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 : Decorate-Sort-Undercorate)
>>>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 liste, parmi lesquelles l'exemple 3.4.5.6 peut jouer un rôle dans le tri de liste en utilisant un certain élément dans l'élément de liste.

comme clé de comparaison

Comparaison d'efficacité :

cmp

Tri par comparaison de mots clés multiples :

Exemple 7 :

Nous voyons que le L trié à ce moment-là n'est trié qu'en fonction du deuxième mot-clé
>>>L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=lambda x:x[1])
>>> L
>>>[('d', 2), ('c', 2), ('b', 3), ('a', 4)]

Si nous voulons trier par le deuxième mot-clé et ensuite utiliser la méthode Comment trier par un mot-clé

Exemple 8 :

Exemple 9 :
>>> L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=lambda x:(x[1],x[0]))
>>> L
>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]
Pourquoi l'exemple 8 fonctionne-t-il ? La raison en est que les tuples sont comparés de gauche à droite. Après avoir comparé le premier, si
>>> L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=operator.itemgetter(1,0))
>>> L
>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]

est égal, comparez le second

.

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