Introduction à Python, méthode list.sort et fonction intégrée triée

coldplay.xixi
Libérer: 2021-01-18 17:11:34
avant
3549 Les gens l'ont consulté

Introduction à Python, méthode list.sort et fonction intégrée triée

Recommandations d'apprentissage gratuites associées : Tutoriel vidéo Python

Tri de liste Python.Méthode de tri et fonction intégrée triées

Plusieurs fois, après avoir obtenu une liste, cette liste ne répond pas à nos besoins. Ce dont nous avons besoin, c'est d'une liste de commande spéciale.

À l'heure actuelle, vous pouvez utiliser la méthode list.sort et la fonction intégrée sorted. Cet article présente l'utilisation et les différences de la méthode list.sort et de la fonction intégrée sorted.

1. La méthode list.sort

La méthode list.sort triera la liste sur place, ce qui signifie qu'elle ne fera pas de copie de la liste originale. C'est pourquoi la valeur de retour de cette méthode est None, vous rappelant que cette méthode ne créera pas de nouvelle liste.

Renvoyer None dans ce cas est en fait une convention en Python : si une fonction ou une méthode modifie l'objet en place, elle doit renvoyer None afin que l'appelant sache que les paramètres passés dans Des modifications ont eu lieu et qu'aucun nouvel objet n'a été généré. été créé.

Jetons un coup d'œil au code :

# coding=utf-8
list_a = [1, 2, 8, 3, 7, 9, 5, 7]
# sort()方法没有返回值
list_b = list_a.sort()
print("list_a: ", list_a)
print('list_b: ', list_b)
Copier après la connexion

Résultats en cours d'exécution :

list_a:  [1, 2, 3, 5, 7, 7, 8, 9]
list_b:  None
Copier après la connexion

Renvoyer None pour indiquer les modifications sur place présente un inconvénient par rapport à cette convention, c'est-à-dire que le l'appelant ne peut pas le concaténer. Au contraire, les méthodes qui renvoient un nouvel objet peuvent être chaînées pour former une interface cohérente.

2. Fonction intégrée triée

Contrairement à list.sort, la fonction intégrée triée créera une nouvelle liste comme valeur de retour.

Cette méthode peut accepter n'importe quelle forme d'objet itérable comme paramètre, même des séquences ou des générateurs immuables, et quels que soient les paramètres triés acceptés, elle renverra finalement une liste.

Exemple de code :

list_c = [1, 2, 8, 3, 7, 9, 5, 7]
# sorted内置函数会返回一个排序后的新列表
list_d = sorted(list_c)
print("list_c: ", list_c)
print('list_d: ', list_d)
Copier après la connexion

Résultat d'exécution :

list_c:  [1, 2, 8, 3, 7, 9, 5, 7]
list_d:  [1, 2, 3, 5, 7, 7, 8, 9]
Copier après la connexion

Comme vous pouvez le voir, lors de l'utilisation de la fonction intégrée triée, une nouvelle liste est renvoyée, tandis que la liste d'origine reste inchangé.

Cela présente deux avantages :

1. Si nous devons utiliser à la fois la liste d'origine et la liste triée, ou si nous voulons trier un objet itérable non-liste dans la liste et la liste triée. être fait

2. Lorsqu'il y a une valeur de retour, nous pouvons faire des appels en chaîne

# 可以对非列表的可迭代对象排序生成列表
str_e = 'python'
list_e = sorted(str_e)
print(list_e)

# 链式调用
str_f = '-'.join(sorted(str_e)).upper().split('-')
print(str_f)
Copier après la connexion

Résultats de fonctionnement :

['h', 'n', 'o', 'p', 't', 'y']
['H', 'N', 'O', 'P', 'T', 'Y']
Copier après la connexion

3. 🎜>

Qu'il s'agisse de la méthode list.sort ou de la fonction sorted, il existe deux paramètres de mots-clés optionnels :

key : Reçoit une fonction avec seulement un paramètre. Cette fonction sera utilisée sur chaque élément de la séquence, et le résultat sera la clé de comparaison sur laquelle s'appuie l'algorithme de tri.

Par exemple, lors du tri de certaines chaînes, vous pouvez utiliser key=str.lower pour obtenir un tri qui ignore la casse, ou utiliser key=len pour trier en fonction de la longueur de la chaîne. La valeur par défaut de key est la fonction d'identité, ce qui signifie que la propre valeur de l'élément est utilisée par défaut pour trier.

reverse :

Si défini sur True, les éléments de la séquence triée seront affichés par ordre décroissant (c'est-à-dire que la valeur maximale sera considérée comme la valeur minimale value) Sorting), la valeur par défaut de reverse est False

phone = ('HUAWEI', 'OPPO', 'MI', 'MEIZU', 'VIVO')
# 按长度进行排序
phone_list = sorted(phone, key=len)
print(phone_list)

phone_list_re = sorted(phone, key=len, reverse=True)
print(phone_list_re)
Copier après la connexion

Résultat de l'exécution :

['MI', 'OPPO', 'VIVO', 'MEIZU', 'HUAWEI']
['HUAWEI', 'MEIZU', 'OPPO', 'VIVO', 'MI']
Copier après la connexion
Dans le code ci-dessus, le premier tri crée une nouvelle liste de chaînes triée par longueur. Le deuxième tri consiste à modifier le tri par longueur de l'ordre croissant à l'ordre décroissant.

Si vous faites attention, vous devriez pouvoir constater que le deuxième résultat n'est pas un retournement complet du premier résultat trié.

Les longueurs d'OPPO et de VIVO sont toutes deux de 4. Après reverse=True, leurs positions relatives sont les mêmes que celles du premier tri. Quelle en est la raison ?

Les algorithmes de tri derrière sorted et list.sort sont tous deux Timsort. Il s'agit d'un algorithme adaptatif qui utilise alternativement le tri par insertion et le tri par fusion

selon les caractéristiques d'ordre des données d'origine pour obtenir la meilleure efficacité.

L'algorithme de tri de Python, Timsort, est stable (sachez-le simplement), ce qui signifie que même si les deux éléments sont de taille incomparable, leurs positions relatives sont fixes dans le résultat de chaque tri.

Comme l'algorithme de tri utilisé est stable, c'est-à-dire que lorsque les longueurs sont les mêmes, les positions relatives d'OPPO et de VIVO ne changeront pas.


Vous maîtrisez maintenant l'utilisation de la méthode list.sort() et de la fonction intégrée triée~

Recommandations d'apprentissage gratuites associées :

Tutoriel Python (vidéo )

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:csdn.net
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