Maîtrisez le type de liste et le type de taple
Trier la liste Le type de liste de Python facilite le tri en modifiant l'ordre des éléments. Vous pouvez trier les éléments par ordre croissant en appelant la méthode sort () sur une liste contenant des nombres comme éléments. Le type de liste étant un type de données mutable, l'objet de liste lui-même est réécrit suite à l'appel de la méthode sort ().
[Trier par ordre croissant] monk_fish_team = [158, 157, 163, 157, 145] monk_fish_team.sort() monk_fish_team ↓ 145, 157, 157, 158, 163
Le comportement par défaut de l'appel de la méthode sort () sans argument est de trier les nombres par ordre croissant. C'est parce que les programmes effectuent souvent un tel traitement. Cependant, vous pouvez modifier la méthode de tri en donnant un argument. Par exemple, si vous avez un argument de mot-clé inverse et transmettez True, vous pouvez trier l'ordre dans l'ordre décroissant.
[Trier par ordre décroissant] monk_fish_team = [158, 157, 163, 157, 145] monk_fish_team.sort(reverse = True) monk_fish_team ↓ 163, 158, 157, 157, 145
Personnalisez l'ordre de tri L'opération de tri n'est rien d'autre que le processus consistant à comparer la taille et la supériorité des données et à décider de l'ordre. La méthode sort () est basée sur autre chose qu'un simple nombre, en donnant un critère séparé pour déterminer l'ordre. Vous pouvez contrôler l'ordre de tri.
[Méthode Sort ()] S.sort(Key, reverse)
Contrairement aux autres méthodes, l'argument de la méthode sort () nécessite la spécification de mot-clé de l'argument. Vous pouvez personnaliser l'ordre de tri en transmettant une fonction qui renvoie les critères de détermination de l'ordre à Key. De plus, comme je l'ai présenté plus tôt, l'argument inverse est spécifié comme True lorsque l'ordre est dans l'ordre décroissant. La valeur par défaut est Falde, qui trie par ordre croissant.
Nous utiliserons un exemple concret pour vous montrer comment personnaliser l'ordre de tri. Le réservoir utilisé par une certaine école de filles de la préfecture d'Ibaraki utilisé pour la méthode split () Envisagez de trier les réservoirs par ordre de force en fonction de données telles que le nom, la vitesse et l'épaisseur du blindage. Tout d'abord, considérez comment représenter les données pour un réservoir. Le type tapple convient pour gérer côte à côte des données hétérogènes telles que les noms et les numéros. Appuyez sur le nom, la vitesse, l'épaisseur de l'armure et les données de calibre du canon pour chaque char Décrivez comme "(" Type 89 char moyen ", 20, 17, 57)". Organisez ces données pour 5 voitures.
[Faites une liste de taples] tank_data = [("IV Tank", 38, 80, 75), ("LT-38", 42, 50, 37), ("Type 89 Medium Tank", 20, 17, 57), ("Type III Assault Gun", 40, 50, 75), ("M3 Medium Tank", 39, 51, 75)]
Afin de trier ces données, nous devons définir clairement ce que nous devons être forts. Il est difficile de définir exactement, mais ici, simplement «plus la valeur de la vitesse, de l'épaisseur du blindage et du diamètre du canon principal est élevée, plus elle est forte». Je vais faire une règle. Créez une fonction qui renvoie les éléments de la liste sous forme de nombres. Dans ce cas, si vous passez un tuple de données de réservoir dans la liste Il vous suffit de créer une fonction qui ajoute les spécifications et les retours. Créez une fonction qui ajoute et renvoie les nombres du premier taple. [Fonction evaluer_tankdata () qui ajoute et renvoie les spécifications du réservoir] def evaluate_tankdata(tap): return tup[1]+tup[2]+tup[3]
Vous pouvez utiliser la fonction evaluer_tankdata () ci-dessus pour comparer numériquement les réservoirs. Quantifions la force du réservoir en utilisant la liste des tapples que nous avons définie. [Afficher la force de chaque réservoir] evaluate_tankdata(tank_data[0]) ↓ 193
evaluate_tankdata(tank_data[4]) ↓ 165
Vous pouvez maintenant comparer les données de la liste. Passez cette fonction comme clé d'argument de la méthode sort (). Ensuite, les éléments de la liste sont passés à la fonction et évalués, et les éléments sont triés. Maintenant, trions les données en utilisant la méthode sort (). Après cela, essayez d'afficher la liste triée. [Trier par force du réservoir] tank_data,sort(key=evaluate_tankdata, reverse=True) tank_data ↓ [(«IV Tank», 38, 80, 75), («III Assault Gun», 40, 50, 75), («M3 Medium Tank», 39, 51, 75), («LT-38» , 42, 50, 37), ("Char moyen Type 89", 20, 17, 57)]
Le comportement par défaut de la méthode sort () est de trier par ordre croissant. Nous passons True à l'argument Reverse pour les ordonner par ordre décroissant, par ordre de force, c'est-à-dire par ordre décroissant de la valeur numérique renvoyée par la fonction evaluer_tankdata (). Il s'est avéré que les performances du char IV étaient les plus élevées. De cette façon, si vous créez une fonction qui évalue les éléments de la liste et donnez un argument, vous pouvez personnaliser finement le comportement de la méthode sort ().
Recommended Posts