Python Liste sort() avec exemples

โšก Rรฉsumรฉ intelligent

Python La fonction `list sort()` organise les รฉlรฉments d'une liste sur place, par ordre croissant par dรฉfaut ou dรฉcroissant via le paramรจtre `reverse`, tandis qu'une fonction `key` optionnelle permet de trier selon des critรจres personnalisรฉs tels que la longueur, les champs de tuple ou des fonctions dรฉfinies par l'utilisateur.

  • (I.e. syntaxe: La mรฉthode sort() accepte les paramรจtres optionnels key et reverse et modifie la liste originale sans en crรฉer de copie.
  • โ˜‘๏ธ Contrรดle des commandes : Dรฉfinir le paramรจtre reverse sur True trie les valeurs de la plus รฉlevรฉe ร  la plus basse au lieu de l'ordre croissant par dรฉfaut.
  • โœ… Paramรจtre clรฉ : Une fonction clรฉ telle que len trie les รฉlรฉments selon une valeur dรฉrivรฉe comme la longueur d'une chaรฎne de caractรจres ou un champ de tuple.
  • ๐Ÿงช trier vs triรฉ : La mรฉthode sort() modifie la liste sur place et renvoie None, tandis que sorted() renvoie une nouvelle liste et conserve l'originale.
  • ๏ธ Critรจres personnalisรฉs : Les expressions lambda et les fonctions dรฉfinies par l'utilisateur permettent ร  sort() de trier les tuples, les dictionnaires et les tuples nommรฉs selon n'importe quel attribut choisi.
  • ๐Ÿค– Flux de travail d'IA : Les pipelines d'apprentissage automatique trient les prรฉdictions par score et sรฉlectionnent les meilleurs rรฉsultats avant le classement ou l'รฉvaluation.

Python Tri de liste()

Quelle est la mรฉthode sort() dans Python?

La fonction sort() dans Python Permet de trier une liste par ordre croissant ou dรฉcroissant. Cette fonction peut รชtre utilisรฉe pour trier une liste numรฉrique, des tuples et une liste de chaรฎnes de caractรจres. Elle ne crรฉe pas de nouvelle liste, mais modifie ou trie la liste d'origine.

Syntaxe de la mรฉthode Sort dans Python

La fonction de tri a la syntaxe suivante :

List.sort(key=โ€ฆ, reverse=โ€ฆ)

La fonction de tri possรจde deux paramรจtres optionnels, ร  savoir :

  • Clรฉ : - Ceci est utilisรฉ pour trier une fonction en fonction d'un critรจre de tri.
  • Reverse: โ€“ Elle prend la valeur ยซ vrai ยป ou ยซ faux ยป. Si la valeur est ยซ vrai ยป, cette fonction personnalisรฉe trie la liste par ordre dรฉcroissant.

Tri d'une liste par ordre croissant ร  l'aide de la mรฉthode Sort dans Python

In Python, la fonction de tri, par dรฉfaut, trie n'importe quelle liste par ordre croissant. Une liste par ordre croissant a la valeur la plus basse sur le cรดtรฉ gauche et la valeur la plus รฉlevรฉe sur le cรดtรฉ droit.

Exemple :

Python code:

base_list=["Google","Reliance","Guru99","Content","Syntax"]
base_list.sort()
print("the base list after sorting is",base_list)

Sortie :

the base list after sorting is ['Content', 'Google', 'Guru99', 'Reliance', 'Syntax']

Code Explication:

  • La liste ci-dessus est une liste de chaรฎnes dรฉfinies alรฉatoirement.
  • La fonction de tri de Python aide ร  trier la liste alรฉatoire par ordre croissant, avec la longueur la plus basse du mot sur le cรดtรฉ gauche et la longueur la plus รฉlevรฉe du mot sur le cรดtรฉ droit.

Trier une liste par ordre dรฉcroissant

La fonction de tri permet รฉgalement de trier une liste par ordre dรฉcroissant. Il peut รชtre dรฉfini comme l'ordre oรน la liste commence par la valeur la plus รฉlevรฉe et se termine par la valeur la plus basse.

Le paramรจtre reverse de la fonction de tri est attribuรฉ comme true pour obtenir une liste triรฉe par ordre dรฉcroissant.

Prenons l'exemple suivant :

Python code:

base_list=[100,600,400,8000,50]
base_list.sort()
print("the base list after sorting is",base_list)
# Reverse Order
base_list.sort(reverse=True)
print("the base list after REVERSE sorting is",base_list)

Sortie :

the base list after sorting is [50, 100, 400, 600, 8000]
the base list after REVERSE sorting is [8000, 600, 400, 100, 50]

Remarque : assurez-vous que l'affectation du mot ยซ True ยป au paramรจtre reverse commence par un ยซ T ยป majuscule pour รฉviter toute erreur d'exรฉcution.

Tri d'une liste de tuples ร  l'aide de la mรฉthode Sort dans Python

Python Tuples sont des collections dโ€™รฉlรฉments immuables qui suivent une sรฉquence ordonnรฉe. PythonLa fonction de tri de peut รชtre utilisรฉe pour trier une liste de tuples ร  l'aide d'une fonction personnalisรฉe et d'une expression lambda.

Une fonction personnalisรฉe peut รชtre crรฉรฉe sans nom et reprรฉsentรฉe par une expression lambda. Voici la syntaxe d'une expression lambda :

syntaxe:

Lambda arguments: expression

La syntaxe ci-dessus est รฉquivalente au code python ci-dessous :

def name (arguments):
return expression

Voici un exemple de tuple et de fonction personnalisรฉe pour illustrer comment une fonction de tri avec des paramรจtres clรฉs permet de trier les รฉlรฉments d'un tuple :

Python code:

base_list = [('Alto', 2020, 500),('MSFT', 2022, 300),('Guru99', 2019, 1070)]
def get_key(base_list):
    return base_list[2]
base_list.sort(key=get_key,reverse=True)
print("The change in base list is as follows",base_list)

Sortie :

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Code Explication:

  • Le paramรจtre reverse est dรฉfini comme true pour trier le tuple par ordre dรฉcroissant.
  • La fonction personnalisรฉe prend le deuxiรจme รฉlรฉment du tuple.
  • Ceci est utilisรฉ comme clรฉ de la fonction de tri.

Regardons l'exemple ci-dessous qui utilise l'expression lambda :

Python code:

base_list = [('Alto', 2020, 500),
('MSFT', 2022, 300),
('Guru99', 2019, 1070)]
base_list.sort(key=lambda base_list:base_list[2],reverse=True)
print("The change in base list is as follows",base_list)

Sortie :

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Explication:

  • L'expression lambda vous aide ร  trier les รฉlรฉments du tuple de haut en bas avec la clรฉ comme deuxiรจme รฉlรฉment du tuple.
  • Le programme vรฉrifiera la valeur la plus รฉlevรฉe du deuxiรจme รฉlรฉment du tuple.

Tri des รฉlรฉments de la liste en utilisant Len comme paramรจtre clรฉ

Len est une fonction intรฉgrรฉe qui dรฉtermine la longueur de l'รฉlรฉment. Cette longueur peut รชtre utilisรฉe pour l'indexation dans la fonction de tri. Pour ce faire, nous assignons Len ร  l'รฉlรฉment. Python paramรจtre clรฉ de la fonction de tri.

Python le code illustre comment utiliser la fonction Len avec la fonction de tri.

Python Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len)
print("The sorted list based on length:",base_list)

Sortie :

The sorted list based on length: ['Alto', 'Java', 'Guru99', 'Python', 'Google']

Code Explication:

Trier les รฉlรฉments de la liste ร  l'aide de Len

  • La longueur de l'รฉlรฉment devient un index pour le paramรจtre clรฉ permettant d'organiser la liste par ordre croissant.
  • La fonction Len estime la longueur de chaque รฉlรฉment prรฉsent dans la liste de base.
  • Il conserve lโ€™รฉlรฉment le plus court du cรดtรฉ gauche et le plus grand รฉlรฉment du cรดtรฉ droit.
  • Ici, les mots alto et java ont une longueur de 4, qui sont placรฉs en premier dans la liste, suivis de Guru99, qui a une longueur de 6.

Cet exemple illustre le concept du paramรจtre reverse dans la fonction sort, comme indiquรฉ ci-dessous :

Python Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len,reverse=True)
print("The sorted list based on length:",base_list)

Sortie :

The sorted list based on length: ['Guru99', 'Python', 'Google', 'Alto', 'Java']

Tri des รฉlรฉments de la liste en utilisant une fonction dรฉfinie par l'utilisateur comme paramรจtre clรฉ

Vous pouvez รฉgalement utiliser une fonction dรฉfinie par l'utilisateur comme paramรจtre clรฉ pour trier une liste. Voici un exemple :

Python Code:

base_list = [{'Example':'Python','year':1991},{'Example':'Alto','year':2014},{'Example':'Guru99', 'year':1995},
{'Example':'Google','year':1985},{'Example':'Apple','year':2007},{'Example':'Emails','year':2010},]
def get_year(element):
    return element['year']
base_list.sort(key=get_year)
print("The base list after sorting using explicit criteria",base_list)

Sortie :

The base list after sorting using explicit criteria [{'Example': 'Google', 'year': 1985}, {'Example': 'Python', 'year': 1991}, {'Example': 'Guru99', 'year': 1995}, {'Example': 'Apple', 'year': 2007}, {'Example': 'Emails', 'year': 2010}, {'Example': 'Alto', 'year': 2014}]

Code Explication:

  • Une fonction dรฉfinie par l'utilisateur est crรฉรฉe pour renvoyer l'annรฉe
  • Le paramรจtre clรฉ prend comme critรจre une fonction dรฉfinie par l'utilisateur.
  • La fonction de tri organisera la liste par ordre croissant en fonction de la valeur de l'รฉlรฉment ยซ annรฉe ยป.

Diffรฉrence entre la mรฉthode de tri et la mรฉthode triรฉe dans Python

Aprรจs avoir รฉtudiรฉ les exemples prรฉcรฉdents, il est utile de comparer directement les deux outils de tri. Avant de rรฉsumer les diffรฉrences, examinons la syntaxe de la mรฉthode Sorted.

Python syntaxe:

sorted (list_name, reverse=โ€ฆ., key=..)

Code Explication:

  • La fonction sorted trie la liste par ordre croissant ou dรฉcroissant.
  • La fonction accepte trois paramรจtres, parmi lesquels deux paramรจtres sont d'un type facultatif et un paramรจtre est du type requis.
  • Le paramรจtre list_name est requis lors de lโ€™utilisation de la mรฉthode Sorted.
  • La mรฉthode Sorted peut prendre nโ€™importe quel type de liste itรฉrable en entrรฉe.
  • Les paramรจtres clรฉs et les paramรจtres inverses sont des paramรจtres facultatifs sous la mรฉthode triรฉe dans Python.

Voici un exemple d'utilisation de la fonction sort et sorted dans Python:

Python code:

#Use of the Sorted method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=sorted(Base_list)
print("the New list using sorted method is",New_list)
#Use of the Sort method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=Base_list.sort()
print("the New list using sort method is",New_list)

Sortie :

the original list is [11, 10, 9, 8, 7, 6]
the new list using the sorted method is [6, 7, 8, 9, 10, 11]
the original list is [11, 10, 9, 8, 7, 6]
the new list using the sort method is None

Code Explication:

  • La liste d'origine est passรฉe comme paramรจtre obligatoire pour la fonction triรฉe.
  • La mรฉthode Sorted renvoie une nouvelle liste en plus de la liste d'origine.
  • Puisquโ€™aucun paramรจtre supplรฉmentaire nโ€™est transmis ร  la mรฉthode sorted, la nouvelle liste est triรฉe par dรฉfaut par ordre croissant.
  • La fonction de tri ne crรฉe aucune nouvelle liste.

Voici les principaux points communs et diffรฉrences :

Fonction triรฉe Fonction de tri
Fonction triรฉe dans Python est une fonction intรฉgrรฉe qui prend list_name comme paramรจtre obligatoire. La fonction de tri ne prend pas la liste d'origine comme paramรจtre.
La mรฉthode triรฉe renvoie une nouvelle liste La fonction de tri ne renvoie pas de nouvelle liste
La fonction triรฉe doit รชtre utilisรฉe pour les listes itรฉrables La fonction de tri doit รชtre utilisรฉe pour les listes non itรฉrables.
Il ne modifie pas la liste originale et nous permet de conserver les donnรฉes originales. La fonction de tri modifie la fonction d'origine et occupe donc moins d'espace mรฉmoire

Quand utiliser la mรฉthode sorted ou la mรฉthode sort ?

Prenons un exemple qui nรฉcessite de trier les donnรฉes raciales. Le programme utilise le numรฉro de dossard et le temps mis en secondes pour terminer la course.

Python code:

from collections import namedtuple
Base = namedtuple('Runner', 'bibnumber duration')
blist = []
blist.append(Base('8567', 1500))
blist.append(Base('5234', 1420))
blist.append(Base('2344', 1600))
blist.append(Base('2342', 1490))
blist.append(Base('23444', 1620))
blist.append(Base('6674', 1906))
print("original list",blist)
blist.sort(key=lambda x: getattr(x, 'duration'))
top_five_result = blist[:5]
print("Results using sort function",top_five_result)
r_blist=sorted(blist,key=lambda x: getattr(x, 'duration'))
top_five_result = r_blist[:5]
print("Results using sorted function",top_five_result)

Sortie :

original list [Runner(bibnumber='8567', duration=1500), Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='23444', duration=1620), Runner(bibnumber='6674', duration=1906)]

Results using sort function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Results using sorted function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Code Explication:

  • La liste de base est triรฉe ร  l'aide de la fonction de tri et de la fonction triรฉe.
  • La liste de base est perdue lorsque la fonction de tri est appliquรฉe.
  • La fonction de tri ne doit pas รชtre appliquรฉe ร  l'ensemble de donnรฉes d'origine. Il doit รชtre utilisรฉ lorsqu'il existe une version copiรฉe de l'ensemble de donnรฉes d'origine.
  • La fonction Sorted conserve la liste d'origine. Cela ne lโ€™annule pas.
  • Cela offre de meilleures conditions traccapacitรฉ et gestion efficace des donnรฉes.

FAQ

Passez la clรฉ `str.lower` ร  la mรฉthode `sort()`, par exemple `names.sort(key=str.lower)`. Chaque chaรฎne est comparรฉe en minuscules ; ainsi, ยซ Apple ยป et ยซ banana ยป sont triรฉes par ordre alphabรฉtique, indรฉpendamment de la casse. La casse d'origine de chaque รฉlรฉment est conservรฉe dans la liste triรฉe finale.

Le tri d'une liste contenant uniquement des nombres ou uniquement des chaรฎnes de caractรจres fonctionne, mais le mรฉlange de types non liรฉs, tels que des entiers et des chaรฎnes de caractรจres, provoque une erreur TypeError, car Python Impossible de les comparer. Convertissez d'abord les valeurs en un type comparable, ou transmettez une fonction de clรฉ qui renvoie des clรฉs comparables.

Python Historiquement, l'interprรฉteur utilisait Timsort, un algorithme hybride combinant tri fusion et tri par insertion. Depuis la version 3.11, il utilise Powersort, une variante dรฉrivรฉe de Timsort dotรฉe d'une politique de fusion plus performante. Les deux algorithmes sont stables et leur complexitรฉ temporelle est de O(n log n) dans le pire des cas.

Oui. La mรฉthode `sort()` est stable ; les รฉlรฉments รฉgaux conservent donc leur ordre relatif d'origine. Cela permet de trier selon plusieurs critรจres par รฉtapes, en commenรงant par le critรจre le moins important et en terminant par le plus important.

La mรฉthode sort() s'exรฉcute en O(n log n) dans le pire des cas et en moyenne. Sur des donnรฉes dรฉjร  majoritairement triรฉes, sa complexitรฉ tend vers O(n), car l'algorithme sous-jacent dรฉtecte et rรฉutilise les sรฉquences triรฉes existantes au lieu de les trier ร  nouveau.

Il est possible de fournir une clรฉ permettant de convertir chaque รฉlรฉment lors de la comparaison, par exemple `nums.sort(key=int)`. La liste est alors triรฉe par valeur numรฉrique et non par caractรจre ; ainsi, ยซ 10 ยป est correctement triรฉ aprรจs ยซ 9 ยป. Les รฉlรฉments stockรฉs restent sous forme de chaรฎnes de caractรจres ; seule la comparaison utilise leur valeur entiรจre.

Le tri permet d'organiser les prรฉdictions par score ou probabilitรฉ, de sรฉlectionner les k meilleurs rรฉsultats dans les systรจmes de classement et de recommandation, et d'ordonner les enregistrements lors de la prรฉparation des donnรฉes. Les pipelines d'apprentissage automatique trient frรฉquemment les valeurs des caractรฉristiques ou les sorties du modรจle avant l'รฉvaluation ; la mรฉthode intรฉgrรฉe `sort()` est donc une รฉtape de prรฉtraitement courante.

Oui. GitHub Copilot et les assistants IA d'agentic gรฉnรจrent des appels ร  `sort()` et `sorted()`, incluant les fonctions clรฉs et les expressions lambda, ร  partir d'un court commentaire. Ils peuvent restructurer les boucles en instructions de tri uniques, mais il est toujours recommandรฉ de tester l'ordre et de confirmer le rรฉsultat dans les cas limites.

Rรฉsumez cet article avec :