Fonctions de tri et de comparaison Python 3

En Python 3, vous ne pouvez plus passer une fonction de comparaison à une fonction triée, mais en Python 3.2 vous pouvez utiliser functools.cmp_to_key pour faire la même chose que passer une fonction de comparaison à une fonction triée. Écrivons quelques exemples.

Tout d'abord, écrivons un exemple qui compare et trie les entiers par chaînes.

python


from functools import cmp_to_key

def cmp(a, b):
    if a == b: return 0
    return -1 if a < b else 1
    
def cmpstr(a, b):
    return cmp(str(a), str(b))

def main():
    xs = [4, 90, -9, 12, 42]
    print(sorted(xs, key=cmp_to_key(cmpstr)))

main()

C'est le résultat de l'exécution.

[-9, 12, 4, 42, 90]

Le résultat de la comparaison d'amplitude renvoie -1, 0 ou 1. Renvoie -1 si moins, 0 si égal, 1 si plus grand.

Cependant, dans cet exemple uniquement, écrire «sorted (xs, key = str)» est identique.

Maintenant que je sais comment utiliser functools.cmp_to_key, je vais essayer le tri que je voulais vraiment faire. J'ai une liste de tuples avec deux éléments et je veux trier cette liste. La méthode de comparaison trie le deuxième élément du taple dans l'ordre croissant et, si le deuxième élément est égal, dans l'ordre décroissant du premier élément. La fonction de comparaison est la suivante.

python


from functools import cmp_to_key

def cmp(a, b):
    if a == b: return 0
    return -1 if a < b else 1

def cmptuple(a, b):
    return cmp(a[1], b[1]) or cmp(b[0], a[0])

def main():
    xs = [(4, 90), (-9, 12), (42, 12), (100, 12), (1, 1), (-123, 1)]
    print(sorted(xs, key=cmp_to_key(cmptuple)))

main()

C'est le résultat de l'exécution.

[(1, 1), (-123, 1), (100, 12), (42, 12), (-9, 12), (4, 90)]

Lien

Recommended Posts

Fonctions de tri et de comparaison Python 3
À propos de Python dict et des fonctions triées
Fonctions d'ordre supérieur et notation d'inclusion en Python
Fonctions Python
Comparaison de la grammaire de base entre Java et Python
[Python] Différence entre trié et trié (Colaboratoire)
Comparaison de l'utilisation des fonctions d'ordre supérieur dans Python 2 et 3
Premier Python 3 ~ Première comparaison ~
Précautions lors du passage de def aux fonctions triées et groupby en Python? ??
# Bases de Python (fonctions)
[Débutant] Fonctions Python
Fonctions Python faciles à utiliser
bases de python: fonctions
Utiliser Python et MeCab avec Azure Functions
Correspondance entre les fonctions intégrées de Python et Rust
Comparaison d'écriture R et Python (méthode de division mutuelle euclidienne)
Une histoire sur la modification de Python et l'ajout de fonctions
fonctions cv2 et types de données (liaison python OpenCV)
Comparaison de Python et Ruby (Environment / Grammar / Literal Edition)
Python> Trier par nombre et trier par alphabet> Utiliser trié ()
Liste triée en Python
[python] Compresser et décompresser
Guide du débutant Python (fonctions)
Astuces Python et Numpy
Comparaison du temps d'exécution de Python SDP
[Python] pip et roue
Fonctions et décorateurs d'ordre supérieur
Itérateur et générateur Python
Paquets et modules Python
Intégration Vue-Cli et Python
[Python] Mémo sur les fonctions
entrée et sortie python
Python et Ruby se séparent
# 4 [python] Bases des fonctions
Fonction intégrée Python ~ Zip ~
Comparaison du gestionnaire de packages Python
Fonctions intégrées Wrap Python
Python asyncio et ContextVar
Fonction anonyme et fonction de carte
[Introduction à l'application Udemy Python3 +] 35. Opérateurs de comparaison et opérateurs logiques
[Python of Hikari-] Chapitre 06-04 Fonctions (arguments et valeurs de retour 3)
Expérience de comparaison de la vitesse d'écriture de fichier entre python 2.7.9 et pypy 2.5.0
[Ruby vs Python] Comparaison de référence entre Rails et Flask
Une comparaison rapide des bibliothèques de test Python et node.js
[Ubuntu] [Python] Comparaison de la détection de visage entre dlib et OpenCV
[Hikari-Python] Chapitre 06-01 Fonctions (fonctions intégrées et définitions de fonctions)
Tableau de comparaison des processus fréquemment utilisés de Python et Clojure
Paiza Python Primer 2: Apprenez les opérateurs de branchement conditionnel et de comparaison
[Python of Hikari-] Chapitre 06-03 Fonctions (arguments et valeurs de retour 2)
[Python] Chapitre 05-01 Syntaxe de contrôle (opérateur de comparaison et branchement conditionnel)
Comparaison de CoffeeScript avec la grammaire JavaScript, Python et Ruby
Curry n'importe quelle fonction avec Python ...
Programmation avec Python et Tkinter
Python> lambda> petites fonctions / fonctions de rappel
Introduction aux fonctions Python
Python: variables de classe et d'instance
Série Python 2 et série 3 (édition Anaconda)
Python et matériel - Utilisation de RS232C avec Python -