Introduction au tri en Python

À un moment donné dans une application ou un programme, nous devons trier les données dans un certain ordre, par exemple, trier les employés en fonction du salaire ou en fonction d'un certain classement, trier la liste de produits en fonction du prix du produit et ainsi de suite. Dans ce cas, le développeur doit implémenter le tri dans un programme, si le développeur utilise le langage de programmation python, il sera très facile à implémenter. Python fournit des fonctions intégrées pour effectuer un tri de base ou personnaliser des fonctionnalités de tri au niveau granulaire. Il y a 2 fonctions intégrées en python à trier.

Voyons comment trier différents types de données, trier les données dans un ordre personnalisé.

  • Nous devons effectuer un tri sur la collection d'éléments ou de groupes d'éléments afin d'obtenir une collection d'éléments dans un certain ordre de tri. Pour le tri, la comparaison doit être effectuée entre chaque élément de la collection et la comparaison n'est possible que si ce sont les mêmes types de données, donc le tri peut être effectué sur la collection s'il s'agit des mêmes éléments de type de données, par exemple, entier à entier peut comparer mais pas un entier à une chaîne.
  • Le point suivant est de créer la collection d'éléments, en python, nous avons des structures de données de listes, de tuple, de set et de dictionnaire qui stockaient la collection d'éléments. Donc, pour effectuer le tri, il faut avoir une compréhension de base des thèses. Nous utiliserons Python 3, la syntaxe peut être légèrement différente si vous utilisez également Python 2 et des exemples de sortie.

Fonction de tri en python

Il existe deux fonctions de tri intégrées en python.

  • Trier()
  • trié ()

Deux fonctions de tri sont mentionnées ci-dessous:

1. sort ()

La méthode sort () trie les éléments d'une liste de collections donnée dans un ordre spécifique croissant ou décroissant.

La syntaxe de la fonction sort () est:

list.sort(key = …, reverse = …)

  • key - La fonction de paramètre keyspecify qui utilise pour la comparaison de tri.
  • Inverse - Le paramètre inverse s'il est vrai, la liste triée est inversée, ce qui signifie trié par ordre décroissant.

Pour obtenir la description de la fonction de tri, utilisez la commande d'aide indiquée ci-dessous.

>>> lis=(1, 4, 3, 2) >>> help( lis.sort )

Commençons la fonction de tri avec l'exemple.

Exemple 1:

l = ( 20, 50, 10, 40, 60 ) print("list = ", l)
l.sort()
print("sorted list = ", l)

Production:

Comme dans le code ci-dessus, la liste non triée est créée (20, 50, 10, 40, 60) et applique en outre la fonction sort (), qui trie la liste par ordre croissant et ne renvoie rien.

Ensuite, nous essayons la fonction sort () sur un type de données décimal ou flottant.

Exemple # 2:

l = ( 26.7, 34.23, 67.45, 89.34, 23.18 ) print("list = ", l)
l.sort()
print("sorted list = ", l)

Production:

Ensuite, nous essayons la fonction sort () sur le type de données char.

Exemple # 3:

l = ( 'b', 'd', 'a', 'n', 'g') print("liist = ", l)
l.sort()
print("sorted liist = ", l)

Production:

Ensuite, nous essayons la fonction sort () sur le type de données String.

Exemple # 4:

l = ( "banana", "apple", "orange", "mango" ) print("liist = ", l)
l.sort()
print("sorted liist = ", l)

Production:

Ensuite, nous essayons la fonction sort () sur différents éléments de types de données.

Exemple # 5:

l = ( 89, 56.78, "apple" ) print("liist = ", l)
l.sort()
print("sorted liist = ", l)

Production:

Ensuite, nous essayons la fonction sort () avec des arguments inverses.

Exemple # 6:

l = ( 26.7, 34.23, 67.45, 89.34, 23.18 ) print("liist = ", l)
l.sort( reverse = True )
print("sorted liist = ", l)

Production:

Dans le code ci-dessus, la liste non triée est créée (26.7, 34.23, 67.45, 89.34, 23.18) et applique davantage la fonction sort () avec reverse = True, la valeur par défaut de reverse est False, qui trie la liste dans l'ordre inverse ou Ordre décroissant.

Ensuite, nous allons essayer la fonction sort () avec des arguments clés:

Le paramètre clé est le composant le plus important de la fonction sort (). À cet argument, une fonction est passée, qui sera utilisée sur chaque élément de la liste en cours de tri pour organiser dans l'ordre résultant.

Commençons l'exemple, supposons que nous ayons une liste de chaînes et que nous voulons trier une liste en fonction de la longueur des chaînes de la liste dans l'ordre croissant (de la plus courte à la plus longue). La fonction len () intégrée en python renvoie la longueur de la chaîne, donc len () peut être utilisé pour passer l'argument clé.

Exemple # 7:

word = "Hello"
length = len(word)
print( "The length of word is ", length)
l = ( "aaa", "bbbbb", "cc", "ddd" ) print("liist = ", l)
print( "The length of list is ", len(l))
# length of the list is 4, because it contains 4 elements
# Now we sort the list based on the length of the list elements
l.sort( key = len )
print("Sorted liist = ", l)
# Now we sort the list based on the length of the list elements and reverse
l.sort(key = len, reverse = True)
print("Sorted liist with reverse = ", l)

Production:

L'ordre résultant de list.sort (key = len) est une liste de chaînes de tri dans l'ordre du plus court au plus long. Alors que list.sort (key = len, reverse = True) résultant en un ordre de la liste est le plus long à la plus courte. La longueur de chaque élément de la liste est déterminée par la fonction len ().

Ensuite, nous essayons la fonction sort () avec une clé passant l'utilisateur définissant la fonction:

Exemple # 8:

l = ( 'banana', 'orange', 'apple' ) print("liist = ", l)
# function return second element
def sort_onSecondChar(word):
return word(1) l.sort( key = sort_onSecondChar )
print("Sorted liist based on second character = ", l)
# Now we sort the list based on the length of the list elements and reverse
l.sort( key = sort_onSecondChar, reverse = True)
print("Sorted liist based on second character with reverse = ", l)

Production:

L'ordre résultant de list.sort (key = sort_onSecondChar)) est une liste de chaînes de tri dans l'ordre croissant en fonction du deuxième caractère. Alors qu'un ordre list.sort (clé = sort_onSecondChar, reverse = True) résultant de la liste décroît en fonction du deuxième caractère. Le tri de chaque élément de la liste est déterminé par l'utilisateur pour définir la fonction sort_onSecondChar ().

2. trié ()

La fonction sorted () appelle sur la liste ou la collection, elle retourne la nouvelle liste triée. La fonction sorted () ne modifie ni ne modifie la liste sur laquelle elle est appelée, mais elle renvoie la liste triée en conséquence.

La syntaxe de la fonction sorted ():

sorted(iterable, key, reverse)

  • itérable - liste, tuple, chaîne, ensemble, ensemble figé, dictionnaire toute collection ou itérable qui doivent être triés.
  • reverse- reverse spécifie si la liste triée doit être inversée ou non (c'est-à-dire l'ordre décroissant). Il est
  • clé - spécifiez la fonction comme clé à comparer pour le tri. C'est facultatif .

Pour obtenir la description de la fonction de tri, utilisez la commande d'aide indiquée ci-dessous.

Considérez les exemples:

Exemple # 9:

l = ( 2, 1, 3, 6, 5, 4 ) print("list = ", l)
sorted(l)
print( "The sorted list = ", l)

Production:

Notez que nous pouvons également utiliser la fonction list.sort () pour effectuer la même chose, mais les différences sont, la fonction sort () modifie la liste elle-même et retourne None comme résultat de sortie. Une autre différence de la fonction list.sort () est qu'elle peut s'appliquer à la seule liste, tandis que sorted () peut s'appliquer à n'importe quelle collection ou itérable.

Voyons l'exemple où nous créons le tuple (nous savons que pour créer un tuple, utiliser (et) des accolades et des fonctionnalités de tuple sont ordonnées, elles stockent les doublons, ne peuvent pas s'appliquer à l'index et elles sont immuables) et appliquons la fonction sorted () .

Exemple # 10:

t = ( 60, 20, 40, 10 )
print("Tuple = ", t)
re=sorted(t)
#print return of sorted()
print( "The return sorted list of sorted() = ", re)
#we check what is there in t
print( "After sorted tuple = ", t)

Production:

Si la fonction sort () appliquée au tuple, elle donne l'erreur "AttributeError: l'objet 'tuple' n'a pas d'attribut 'sort'".

La fonction sort () ne peut donc pas s'appliquer au tuple, ni même à d'autres collections sauf list.

Ensuite, nous verrons quelques exemples avec différents types de données:

Exemple # 11:

l = ( 2.89, 56.34, 45.23 ) print("List of floating numbers = ", l)
re=sorted(l)
#print return of sorted()
print( "The return list of sorted() floating numbers = ", re)
lc = ( 'l', 'e', 'g', 'a', 'd' ) print("List of characters = ", lc)
re=sorted(lc)
#print return of sorted()
print( "The return list of sorted() characters = ", re)

Production:

Ensuite, nous allons essayer la fonction sorted () avec le paramètre inverse:

Prenons l'exemple:

Exemple # 12:

l = ( 2, 1, 3, 6, 5, 4 ) print("List = ", l)
re=sorted(l, reverse=True )
#print return of sorted()
print( "The return list of sorted() with reverse = ", re)

Production:

Ensuite, nous verrons la fonction sorted () avec le paramètre key, dans le code ci-dessous, en passant la fonction len () au paramètre key, la fonction sorted () renverra alors une liste dans l'ordre de tri en fonction de la longueur des éléments.

Exemple # 13:

l = ('aaaa', 'bb', 'ccc', 'ddddd') print("List = ", l)
re=sorted(l, key = len )
#print return of sorted()
print( "The return list of sorted() with key = ", re)

Production:

Ensuite, nous verrons une fonction sorted () avec un paramètre clé au fur et à mesure que l'utilisateur définit la fonction, dans le code ci-dessous, la fonction returnSecond () est capturée en passant au paramètre clé. La fonction returnSecond () permet à l'utilisateur de définir la fonction, qui renvoie simplement le deuxième élément, de sorte que la fonction sorted () renvoie une nouvelle liste triée dans l'ordre de tri en fonction du deuxième élément du tuple. Si nous voulons trier sur la base du premier élément, modifiez la fonction returnSecond () pour renvoyer le premier élément sous la forme (L (0)).

Exemple # 14:

# return second element for sort
def returnSecond( L ):
return L(1) # list of tuple
list = ( ('a', 40), ('b', 30), ('c', 20), ('d', 10) ) # sorting list with key = returnSecond (returnSecond function which return second element so sort done based on seceond elemet)
sortedList = sorted(list, key = returnSecond)
# print list
print('The sorted list:', sortedList)

Production:

Nous modifions le code ci-dessus en utilisant la fonction lambda (la fonction lambda est une fonction anonyme, simule la même chose que les fonctions en ligne de C et C ++).

Exemple # 15:

# list of tuple
list = ( ('a', 40), ('b', 30), ('c', 20), ('d', 10) ) # sorting list with key = lambda x : x(1) (lambda function which return second element so sort done based on second element)
sortedList = sorted( list, key = lambda x : x(1))
print( "The sorted list = ", sortedList)

Production:

Le code ci-dessus modifie le tri en fonction du premier élément en modifiant la fonction lambda.

Exemple # 16:

# list of tuple
list = ( ('a', 40), ('b', 30), ('c', 20), ('d', 10) ) # sorting list with key = lambda x : x(0) (lambda function which return first element so sort done based on first element)
sortedList = sorted( list, key = lambda x : x(0))
# print list
print('The sorted list:', sortedList)

Production:

Créons maintenant une liste des détails des étudiants et pour stocker les détails de chaque étudiant, le tuple que nous utiliserons. Un tuple contient un dossier d'élève, le premier élément du tuple est le nom de l'élève, le deuxième élément est le numéro de rôle de l'élève et le troisième élément est le total des notes de l'élève. Ensuite, nous voulons stocker les détails des étudiants dans l'ordre de leurs notes, alors commençons le codage.

Exemple # 17:

students = ( ('john', 1, 60), ('jane', 2, 70), ('dave', '3', 70.5), ('joseph', 1, 92) ) print( "The Student List = ", students)
# sorting the student list of tuple based on the third element that is marks
sortedlist = sorted(students, key=lambda stud : stud(2))
print("The sorted list = ", sortedlist)
#reverese
sortedlist = sorted(students, key=lambda stud : stud(2), reverse=True)
print("The sorted list with reverse=True ", sortedlist)
# Display the student name and marks in sorting order of their marks
sortedlist = sorted(students, key=lambda stud : stud(2))
print("The student names and marks in order of their marks")
print("name", "marks")
for x in sortedlist:
print(x(0), x(2))

Production:

Conclusion

Les fonctions sort () et sorted () permettent de trier la collection. Le list.sort () modifie la liste elle-même, tandis que le tri (liste) non modifié dans la liste renvoie la nouvelle liste triée. La fonction sort () s'applique uniquement à la liste tandis que la fonction sorted () peut s'appliquer à toutes les collections comme list, tuple, dictionary et all.

Articles recommandés

Ceci est un guide de tri en Python. Nous discutons ici des deux fonctions de tri intégrées en python avec le programme et la sortie. Vous pouvez également consulter l'article suivant pour en savoir plus -

  1. Variables Python
  2. Destructeur en Python
  3. Connexion à la base de données Python
  4. Éditeurs Python
  5. Types de données PL / SQL
  6. Différents types de données SQL avec des exemples