Explication détaillée de la façon d'utiliser sort() en Python

高洛峰
Libérer: 2017-05-25 11:14:31
original
3312 Les gens l'ont consulté

1. Formulaire de base

sorted(iterable[, cmp[, key[, reverse]]])
iterable.sort(cmp[, key[, reverse]])
Copier après la connexion


Explication du paramètre :
(1) itérable spécifie la liste ou l'itérable à trier, il va sans dire ; > (2) cmp est une fonction qui spécifie la fonction de comparaison lors du tri. Vous pouvez spécifier une fonction ou une fonction lambda, telle que :
les étudiants sont une liste d'objets de classe. Chaque membre a trois champs. faites-le vous-même lorsque vous utilisez la fonction sorted pour comparaison. cmp, par exemple, ici vous souhaitez trier en comparant le troisième membre de données. Le code peut être écrit comme ceci :

students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
sorted(students, key=lambda student : student[2])
Copier après la connexion

(3) clé. est une fonction, précisant quel élément des éléments à trier est pris. Tri, la fonction est expliquée avec l'exemple ci-dessus, le code est le suivant :

sorted(students, key=lambda student : student[2])
Copier après la connexion

La fonction du lambda. La fonction spécifiée par key est de supprimer le troisième champ de l'élément student (c'est-à-dire : student[2]), donc lorsque le tri est trié, le troisième champ de tous les éléments des étudiants sera utilisé pour trier.

2. Utilisation courante :
1. Tri sur place 1) La liste a sa propre méthode de tri, qui trie la liste sur place. Puisqu'il s'agit d'un tri sur place, les tuples ne peuvent évidemment pas avoir cette méthode, car les tuples ne peuvent pas être modifiés.

x = [4, 6, 2, 1, 7, 9]
x.sort()
print x # [1, 2, 4, 6, 7, 9]
Copier après la connexion


2. Tri des copies1)[:] Méthode de partage

x =[4, 6, 2, 1, 7, 9]
y = x[ : ]
y.sort()
print y #[1, 2, 4, 6, 7, 9]
print x #[4, 6, 2, 1, 7, 9]
Copier après la connexion

Remarque : y = x [ :] Copiez tous les éléments de la liste x vers y via une opération de partitionnement. Si vous attribuez simplement x à y : y = x, y et x pointent toujours vers la même liste et aucune nouvelle copie n'est générée.
2) la méthode sorted
sorted renvoie une copie ordonnée, et le type est toujours une liste, comme suit :

x =[4, 6, 2, 1, 7, 9]
y = sorted(x)
print y #[1, 2, 4, 6, 7, 9]
print x #[4, 6, 2, 1, 7, 9] 
print sorted('Python') #['P', 'h', 'n', 'o', 't', 'y']
Copier après la connexion


3. Utilisation avancée
1. Personnaliser la fonction de comparaison cmp

def comp(x, y):
if x < y:
return 1
elif x > y:
return -1
else:
return 0
nums = [3, 2, 8 ,0 , 1]
nums.sort(comp)
print nums # 降序排序[8, 3, 2, 1, 0]
nums.sort(cmp) # 调用内建函数cmp ,升序排序
print nums # 降序排序[0, 1, 2, 3, 8]
Copier après la connexion


2. Personnaliser la clé et inverser1.reverse pour implémenter le tri décroissant, requis Fournit une valeur booléenne, par défaut False (ordre croissant).
2.key doit fournir une fonction appelée par le processus de tri lorsqu'elle est utilisée :

alist = [('2', '3', '10'), ('1', '2', '3'), ('5', '6', '7'), ('2', '5', '10'), ('2', '4', '10')]
# 多级排序,先按照第3个元素排序,然后按照第2个元素排序:
print sorted(alist, cmp = None, key = lambda x:(int(x[2]), int(x[1])), reverse = False)
-------------------------------------------------------------------------------------------
[('1', '2', '3'), ('5', '6', '7'), ('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10')]
Copier après la connexion


4. fonction Operator.itemgetter fournie par le module opérateur La fonction itemgetter est utilisée pour obtenir les données sur les dimensions de l'objet. Les paramètres sont des numéros de série (c'est-à-dire les numéros de série des données à obtenir dans l'objet).

a = [1,2,3]
>>> b=operator.itemgetter(1)   //定义函数b,获取对象的第1个域的值
>>> b(a)
2
>>> b=operator.itemgetter(1,0) //定义函数b,获取对象的第1个域和第0个的值
>>> b(a)
(2, 1)
Copier après la connexion

Il est à noter que la fonction Operator.itemgetter n'obtient pas la valeur, mais définit une fonction qui peut être utilisée pour obtenir la valeur en appliquant la fonction à l'objet.

Utilisation de itemgetter dans le tri :

from operator import itemgetter
alist = [('2', '3', '10'), ('1', '2', '3'), ('5', '6', '7'), ('2', '5', '10'), ('2', '4', '10')]
# 多级排序,先按照第3个元素排序,然后按照第2个元素排序:
print sorted(alist, cmp = None, key = itemgetter(2, 1), reverse = False)
print sorted(alist, cmp = None, key = lambda x:itemgetter(2, 1)(x), reverse = False)
print sorted(alist, cmp = None, key = lambda x:map(int, itemgetter(2, 1)(x)), reverse = False)
--------------------------------------------------------------------------------------------------
[('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10'), ('1', '2', '3'), ('5', '6', '7')]
[('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10'), ('1', '2', '3'), ('5', '6', '7')]
[('1', '2', '3'), ('5', '6', '7'), ('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10')]
Copier après la connexion

Ce qui précède est l'utilisation de base de la méthode sort() en Python introduite par l'éditeur. vous sera utile. Cela est utile à tout le monde. Si vous avez des questions, laissez-moi un message et je vous répondrai à temps !

[Recommandations associées]

1

Partagez des exemples d'utilisation du tri en python 2.

Tutoriel détaillé sur l'utilisation de valeurs() en Python

3

Exemple d'utilisation de sort_values ​​​​isin dans pandas DataFrame

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!