0
votes

Comment rechercher la liste des objets pour l'index du minimum

Je souhaite rechercher dans une liste d'objets pour le nombre le plus bas présent dans un attribut des objets.

Ceci est assez facile à l'aide d'une compréhension de liste et de la fonction min . Le problème vient lorsque je souhaite trouver l'index de l'objet. xxx


2 commentaires

Dupliquer de Stackoverflow.com/q/16945518/2988730


Les listes et les tableaux ne sont pas les mêmes en Python. Vous avez des listes.


4 Réponses :


1
votes

Utilisez énumérable à itérer À travers des listes tout en gardant une trace des indices: xxx

(i, école.students_per_class ()) est un tuple et en utilisant la touche de min () , nous demandons à Python de trouver un minimum de école.students_per_class () , qui renvoie ensuite son indice avec elle.

Lire à propos de Lambda ici .


3 commentaires

Merci pour votre réponse. Pourriez-vous s'il vous plaît expliquer ce qui se passe avec énumérable et lambda? Je n'ai aucune idée. Merci encore. EDIT: Pourriez-vous le mettre dans mon contexte.


Vous devez échanger l'ordre du tuple de résultat ou renvoyera toujours le premier élément, dont l'index est 0.


@Alexstiles, j'ai ajouté des liens vers la documentation officielle pour la lecture supplémentaire sur énumérer et lambda .



1
votes

Je pense que vous recherchez peut-être Fonction np.argmin , si vous fournissez une liste comme une entrée, il retournera l'index de l'élément minimal.

Dans ce cas, ce serait: p>

import numpy as np 
min_ind = np.argmin([school.students_per_class() for school in schools])
print(schools[min_ind])


0 commentaires

1
votes

Vous pouvez utiliser min 's clés argument à la recherche par index: xxx

une touche fournit les valeurs qui seront comparées au lieu de la séquence réelle. Ici, ma séquence est plage (len (écoles)) , qui est juste les indices de tous les éléments. Mais au lieu de trouver l'index minimum, je le fais pour trouver le minimum de écoles [i] .Students_per_class () pour chaque index i . .


5 commentaires

Pourriez-vous extrapoler sur ce que la "clé" de la Lambda fait réellement. Merci.


@Alex. Oui, je peux élaborer


Je m'excuse pour ma mauvaise utilisation des mots. Pourriez-vous s'il vous plaît élaborer. Merci.


@Alex. J'ai élaboré


@Alex. Nous avons tous été débutants à un moment donné. Si vous êtes prêt à faire un effort, je suis heureux d'aider.



2
votes

Si vous vouliez pouvoir comparer, trier, trouver le min / max sur les éléments directement, vous pouvez utiliser les méthodes "DUDER". Ces méthodes vous permettent de surcharger des fonctions intégrées sur les classes.

Par exemple, si vous aviez une classe comme celle-ci xxx

Vous pouvez alors créer deux instances et les comparer directement comme Ceci, xxx

ou si vous aviez une liste d'éléments xxx

Vous pouvez alors obtenir l'élément minimum en allant < / p> xxx

ou l'index de celui-ci en allant xxx

Bien que cela puisse suffire à une référence à l'élément minimum .


0 commentaires