Considérons une liste de tuple générée aléatoirement, comme dans cet exemple:
>>> import random
>>> l = [(random.randint(0, 100),random.randint(0, 100)) for i in range(10)]
>>> l
[(69, 38), (92, 75), (37, 89), (64, 52), (70, 72), (84, 44), (13, 0), (20, 67), (38, 56), (40, 98)]
pour trier la liste par rapport au premier élément, on peut directement appliquer sorted():
>>> sorted(l)
[(13, 0), (20, 67), (37, 89), (38, 56), (40, 98), (64, 52), (69, 38), (70, 72), (84, 44), (92, 75)]
ou
>>> sorted(l, key=lambda x: x[0])
[(13, 0), (20, 67), (37, 89), (38, 56), (40, 98), (64, 52), (69, 38), (70, 72), (84, 44), (92, 75)]
pour trier la liste par rapport au deuxième élément:
>>> sorted(l, key=lambda x: x[1])
[(13, 0), (69, 38), (84, 44), (64, 52), (38, 56), (20, 67), (70, 72), (92, 75), (37, 89), (40, 98)]
Note; marche aussi avec sort(), la difference est que cette fonction modifie directement la liste:
>>> l.sort(key=lambda x: x[0])
>>> l
[(13, 0), (20, 67), (37, 89), (38, 56), (40, 98), (64, 52), (69, 38), (70, 72), (84, 44), (92, 75)]
>>> l.sort(key=lambda x: x[1])
>>> l
[(13, 0), (69, 38), (84, 44), (64, 52), (38, 56), (20, 67), (70, 72), (92, 75), (37, 89), (40, 98)]
Références
Liens | Site |
---|---|
Sort a list of tuples by 2nd item (integer value) | stackoverflow |
sort() | python doc |
sorted() | python doc |
Sorting HOW TO | python 3 doc |
Python List sort() | programiz.com |
sorted | Python doc |
Python - how to sort a list of numerical values in ascending order | stackoverflow |
How can I create a list of randomly generated tuples? | daniweb.com |
Un exemple 1D de code python sur la méthode des k plus proches voisins | science-emergence |
How to sort a list of numbers (in ascending or descending order) with python 3 ? | science-emergence |