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)
Résultats en cours d'exécution :
list_a: [1, 2, 3, 5, 7, 7, 8, 9] list_b: None
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)
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]
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)
Résultats de fonctionnement :
['h', 'n', 'o', 'p', 't', 'y'] ['H', 'N', 'O', 'P', 'T', 'Y']
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.
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 Falsephone = ('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)
['MI', 'OPPO', 'VIVO', 'MEIZU', 'HUAWEI'] ['HUAWEI', 'MEIZU', 'OPPO', 'VIVO', 'MI']
selon les caractéristiques d'ordre des données d'origine pour obtenir la meilleure efficacité.
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!