Site de référence: [Introduction à Python] Comment trier efficacement le contenu d'une liste avec tri par liste
Lors de la programmation, vous souhaitez parfois trier le contenu d'une liste. Selon la langue, il existe une méthode pour réaliser un algorithme de tri existant en utilisant pleinement les instructions for etc., ce qui est étonnamment difficile. Cependant, Python a une fonction pour trier les listes, vous pouvez donc les trier facilement.
Cette fois, je vais vous expliquer comment trier le contenu de la liste.
table des matières 1 [Trier à l'aide de la fonction de tri](## Trier à l'aide de la fonction de tri) 2 [Tri inversé à l'aide de la fonction inverse](## Tri inversé à l'aide de la fonction inverse) 3 [Trier à l'aide de la fonction triée](## Trier à l'aide de la fonction triée) 3.1 [Tri croissant avec fonction triée](Tri croissant avec fonction triée ###) 3.2 [Trier par ordre décroissant avec la fonction triée](Trier par ordre décroissant avec la fonction ### triée) 4 [Trier la liste multidimensionnelle](## Trier la liste multidimensionnelle)
Le moyen le plus simple de lister en Python est d'utiliser la fonction de tri. La syntaxe de la fonction de tri est la suivante.
liste.sort()
Utilisez sort () pour trier le contenu de la liste par ordre croissant. Les chaînes de caractères sont triées par ordre de code de caractère et les valeurs numériques sont triées par ordre croissant. Si vous triez avec sort (), le contenu de la liste d'origine sera échangé.
list1 = ['python', 'list', 'sort']
print('Avant de trier:{}'.format(list1))
list1.sort()
print('Après le tri:{}'.format(list1))
Résultat d'exécution
Avant de trier: [‘python’, ‘list’, ‘sort’] Après le tri: ['list', 'python', 'sort']
Vous pouvez facilement trier la liste à l'aide de la fonction de tri, mais l'ordre est toujours croissant. Si vous souhaitez trier par ordre décroissant, utilisez la fonction inverse. La syntaxe de la fonction inverse est la suivante.
liste.reverse()
Si vous utilisez reverse (), tout dans la liste sera inversé. Par conséquent, vous pouvez trier la liste par ordre décroissant en utilisant reverse () après avoir trié par ordre croissant en utilisant sort ().
list1 = [1,5,3,9,6,7,8]
print('Avant de trier:{}'.format(list1))
list1.sort()
print('Après le tri(ordre croissant):{}'.format(list1))
list1.reverse()
print('Après le tri(Ordre décroissant):{}'.format(list1))
Résultat d'exécution
Avant le tri: [1, 5, 3, 9, 6, 7, 8] Après le tri (ordre croissant): [1, 3, 5, 6, 7, 8, 9] Après le tri (ordre décroissant): [9, 8, 7, 6, 5, 3, 1]
Nous avons constaté que la fonction de tri trie la liste par ordre croissant et que la fonction inverse peut être utilisée pour trier par ordre décroissant. Cependant, dans le cas d'un tri utilisant ces deux fonctions, le contenu de la liste d'origine sera réécrit.
Si vous avez trié mais souhaitez le restaurer, vous souhaiterez peut-être créer une nouvelle liste triée sans modifier le contenu si possible. Dans un tel cas, la fonction triée est pratique.
La fonction triée est une fonction qui trie une liste de la même manière que la fonction de tri. Cependant, la fonction triée renvoie une liste triée, donc contrairement à la fonction de tri, le contenu du tri d'origine reste le même. La syntaxe de tri par ordre croissant avec la fonction triée est la suivante.
Liste 2= sorted(Liste 1)
Passer la liste 1 avant le tri à trié renvoie la liste triée. Le remplacer par le listing 2 crée un nouveau listing 2 qui trie le listing 1. La liste d'origine ne change pas, c'est donc bien de conserver la liste d'origine au cas où quelque chose ne va pas.
list1 = [1,5,3,9,6,7,8]
list2 = sorted(list1)
print('Avant de trier:{}'.format(list1))
print('Après le tri:{}'.format(list2))
Résultat d'exécution
Avant le tri: [1, 5, 3, 9, 6, 7, 8] Après le tri: [1, 3, 5, 6, 7, 8, 9]
Le tri avec la fonction triée se traduit par ordre croissant, mais vous pouvez bien sûr également trier par ordre décroissant.
Liste 2= sorted(Liste 1)
Lorsque vous utilisez la fonction triée, vous pouvez trier par ordre décroissant en définissant l'option appelée reverse sur True.
list1 = [1,5,3,9,6,7,8]
list2 = sorted(list1, reverse=True) #inverser à True
print('Avant de trier:{}'.format(list1))
print('Après le tri:{}'.format(list2))
Résultat d'exécution
Avant le tri: [1, 5, 3, 9, 6, 7, 8] Après le tri: [9, 8, 7, 6, 5, 3, 1] Tri de liste multidimensionnel
Jusqu'à présent, nous avons expliqué comment trier une liste unidimensionnelle, mais parfois vous voudrez peut-être trier une liste multidimensionnelle bidimensionnelle ou plus grande. Les tableaux multidimensionnels peuvent être triés en utilisant sort (), reverse (), sorted () comme dans 1-dimension.
Cependant, dans le cas du multi-dimensionnel, le résultat dépend de la valeur utilisée pour le tri. Par exemple, supposons que vous souhaitiez trier une liste comme celle-ci:
list1 = [[1,5,3], [6,4,8], [9,11,2]]
Cette liste1 est un tableau bidimensionnel de trois listes avec trois éléments. Le résultat du tri de cette liste1 change en fonction de l'élément de chaque liste d'éléments utilisé comme clé.
[[1, 5, 3], [6 ,4 ,8], [9, 11, 2]] #Saisissez le premier élément de chaque liste
[[6, 4, 8], [1, 5, 3], [9, 11, 2]] #Saisissez le deuxième élément de chaque liste
[[9, 11, 2], [1, 5, 3], [6, 4, 8]] #Saisissez le troisième élément de chaque liste
Si vous triez normalement une liste multidimensionnelle, elle sera triée en utilisant le premier élément comme clé. Utilisez itemgetter pour trier par éléments clés.
from operator import itemgetter
Liste 1.sort(key=itemgetter(1)) #Liste 1は2次元以の配列
Comme itemgetter est une fonction de la bibliothèque d'opérateurs, il doit d'abord être importé. L'argument de itemgetter () représente le numéro de l'élément que vous souhaitez saisir. Dans le cas de itemgetter (1), la liste est triée en utilisant le premier élément comme clé.
Vous pouvez utiliser itemgetter pour choisir l'élément à utiliser comme clé.
from operator import itemgetter
list1 = [[1,5,3], [6,4,8], [9,11,2]]
print('Avant de trier:{}'.format(list1))
list1.sort(key=itemgetter(0))
print('Après le tri(0ème élément):{}'.format(list1))
list1.sort(key=itemgetter(1))
print('Après le tri(Premier élément):{}'.format(list1))
list1.sort(key=itemgetter(2))
print('Après le tri(Deuxième élément):{}'.format(list1))
Résultat d'exécution
Avant le tri: [[1, 5, 3], [6, 4, 8], [9, 11, 2]] Après le tri (0e élément): [[1, 5, 3], [6, 4, 8], [9, 11, 2]] Après le tri (premier élément): [[6, 4, 8], [1, 5, 3], [9, 11, 2]] Après le tri (deuxième élément): [[9, 11, 2], [1, 5, 3], [6, 4, 8]]
Recommended Posts