Fonction sorted() de Python3

Python3 内置函数Fonctions intégrées de Python3


Description

sorted()La fonction effectue des opérations de tri sur tous les objets itérables.

Différence entre sort et sorted :

sort est une méthode appliquée aux listes, tandis que sorted peut effectuer des opérations de tri sur tous les objets itérables.

La méthode sort des listes agit sur une liste existante, tandis que la fonction intégrée sorted renvoie une nouvelle liste, au lieu d'agir sur l'originale.

Syntaxe

Syntaxe de sorted :

sorted(iterable, key=None, reverse=False)  

Description du paramètre :

  • iterable -- objet itérable.
  • key -- principalement utilisé pour comparer des éléments, n'a qu'un seul paramètre. Le paramètre de la fonction spécifique est pris à partir de l'objet itérable, spécifiant un élément dans l'objet itérable à utiliser pour le tri.
  • reverse -- règle de tri, reverse = True pour l'ordre décroissant, reverse = False pour l'ordre croissant (par défaut).

Valeur de retour

Renvoie une liste retriée.

Exemple

L'exemple suivant illustre l'utilisation la plus simple de sorted :

>>> sorted([5, 2, 3, 1, 4])
[1, 2, 3, 4, 5]                      # par défaut, l'ordre est croissant

Vous pouvez également utiliser la méthode list.sort() d'une liste. Cette méthode modifie la liste d'origine (renvoie None). Habituellement, cette méthode est moins pratique que sorted() - si vous n'avez pas besoin de la liste d'origine, list.sort() est légèrement plus efficace.

>>> a=[5,2,3,1,4]
>>> a.trier()
>>> a
[1,2,3,4,5]

Une autre différence est que la méthode list.sort() n'est définie que pour les listes, tandis que la fonction sorted() peut accepter n'importe quel itérable.

>>> sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})
[1, 2, 3, 4, 5]

Utilisez key pour trier dans l'ordre inverse

>>> example_list = [5, 0, 6, 1, 2, 7, 3, 4]
>>> result_list = sorted(example_list, key=lambda x: x*-1)
>>> print(result_list)
[7, 6, 5, 4, 3, 2, 1, 0]
>>>

Pour trier dans l'ordre inverse, vous pouvez également passer le troisième paramètre reverse=True :

>>> example_list = [5, 0, 6, 1, 2, 7, 3, 4]
>>> sorted(example_list, reverse=True)
[7, 6, 5, 4, 3, 2, 1, 0]

Voici un exemple plus complexe, le tri du tableau des médailles. Les données contiennent les données d'or, d'argent et de bronze pour 15 pays, en utilisant\ncomme délimiteur :

Exemple

s = "Allemagne 10 11 16\nItalie 10 10 20\nPays-Bas 10 12 14\nFrance 10 12 11\nRoyaume-Uni 22 21 22\nChine 38 32 18\nJapon 27 14 17\nÉtats-Unis 39 41 33\nComité olympique russe 20 28 23\nAustralie 17 7 22\nHongrie 6 7 7\nCanada 7 6 11\nCuba 7 3 5\nBrésil 7 6 8\nNouvelle-Zélande 7 6 7"
stodata = s.split('\n',-1)

# Utiliser sorted
para = {}

for line in range(len(stodata)):
    # Chaque ligne de données
    data = stodata[line].split(' ')
    print(data)
    # Assembler la structure de données para={'Chine': [], 'Russie': []}
    para[data[0]] = [int('-' + i) for i in data[1:]]
# Commencer le tri (x
new_para = sorted(para.items(), key=lambda x: (x[1], x[0]))
print()

c=[]
for i in new_para:
     c.append((i[0]))
for j in range(15):
    print(f"{(j+1):2d}  {c[j]}")

Le résultat de sortie est:

['德国', '10', '11', '16']
['意大利', '10', '10', '20']
['荷兰', '10', '12', '14']
['法国', '10', '12', '11']
['英国', '22', '21', '22']
['中国', '38', '32', '18']
['日本', '27', '14', '17']
['美国', '39', '41', '33']
['俄罗斯奥委会', '20', '28', '23']
['澳大利亚', '17', '7', '22']
['匈牙利', '6', '7', '7']
['加拿大', '7', '6', '11']
['古巴', '7', '3', '5']
['巴西', '7', '6', '8']
['新西兰', '7', '6', '7']

 1  美国
 2  中国
 3  日本
 4  英国
 5  俄罗斯奥委会
 6  澳大利亚
 7  荷兰
 8  法国
 9  德国
10  意大利
11  加拿大
12  巴西
13  新西兰
14  古巴
15  匈牙利

Python3 内置函数Fonctions intégrées de Python3

Autres extensions