Obtenir un max de la valeur à partir d'une liste de listes?
J'ai donc une liste qui contient plusieurs liste, qui ont tous trois chaînes d'abord, puis un nombre à virgule, comme:
resultlist = [["1", "1", "a", 8.3931], ["1", "2", "b", 6.3231], ["2", "1", "c", 9.1931]]
Comment puis-je faire une fonction qui retourne la valeur maximale (qui serait ici 9.1931)? J'ai essayé
def MaxValue():
max_value = max(resultlist)
return max_value
mais qui me donne juste une liste.
EDIT: Aussi, de toute façon, j'ai pu obtenir l'index d'où la valeur vient de la? Comme, à partir de laquelle les sous-liste?
InformationsquelleAutor FeatherMarauder | 2015-10-21
Vous devez vous connecter pour publier un commentaire.
Boucle par le biais de votre liste externe et sélectionnez le dernier élément de chaque sous-liste:
Il est également préférable si vous gardez toutes les fonction de variables liées à la portée de la vérification (passer la liste en argument et ne confondez pas l'espace de noms en réutilisant les noms de variables).
Peut-être d'une plus fonctionnel que pythonic manière:
Il commence par la cartographie de chaque élément de liste des résultats à la valeur et puis trouve le max.
L'intermédiaire de la matrice est:
De sortie:
Si vous souhaitez que l'index est trop, vous pouvez utiliser
enumerate
avecoperator.itemgetter
à l'aide demap
:Qui renvoie un tuple de la max avec l'index:
Ou juste un gen exp:
Êtes-vous en essayant d'obtenir le maximum de nombre de la flotte (le dernier indice dans votre liste)? Si oui, voici une solution.
sorted()[0]
au lieu demax()
? C'est un énorme gain de performance pour trier la liste seulement pour obtenir la plus grande valeur.Ici est une réponse juste au cas où vous obtenez une liste de liste, où le nombre n'est pas toujours le 3ème position:
Ce qui se passe?
itertools.chain
aplatit la liste de listes, lefilter
puis sélectionne toutes les valeurs numériques dont la valeur maximale est alors déterminée à l'aide de lamax
fonction.L'avantage ici est qu'il fonctionne aussi pour arbitraire des listes de listes dont la valeur numérique peut être trouvé n'importe où dans la liste.
Pour votre exemple:
Une plus générale exemple:
EDIT:
Si vous aussi vous voulez obtenir l'index de la valeur maximale, vous pouvez effectuer les opérations suivantes (à l'aide de @Padraic Cunningham approche):
Cette approche suppose qu'il y a exactement une valeur numérique par liste!
Un exemple de plus à l'aide d'une liste où la valeur numérique est sur une position arbitraire:
Numpy permet numérique des listes imbriquées. Essayez ceci:
max()
retourne la liste dont le premier élément est la valeur maximale de toutes les listes " premier élément, tandis quenp.max()
renvoie la valeur la plus élevée de toutes les listes imbriquées.