Fonction sorted() de 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 :
[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.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.
[1, 2, 3, 4, 5]
Utilisez key pour trier dans l'ordre inverse
>>> 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 :
>>> 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
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 匈牙利Autres extensions