IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

trouver le max dans une liste


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Points : 30
    Points
    30
    Par défaut trouver le max dans une liste
    bonjour

    j'ai des données de ce type

    tab2 [(1.0, 0), (0.23708331625035484, 1), (0.18343018815345746, 2), (0.16703338552065583, 3)]

    comment obtenir le max de tab2 et l'indice correspondant c'est a dire 1 et 0

  2. #2
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Salut.

    La function "max()" de base de python a plusieurs arguments. Tout comme la function "sort()" on peut lui passer un critère pour determiner quelle est la valeur max sous la forme d'une fonction. Pour récupérer le couple le plus grand de la liste basé sur la valeur du premier nombre de chaque couple on peut faire quelque chose comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tab2 = [(1.0, 0), (0.23708331625035484, 1), (0.18343018815345746, 2), (0.16703338552065583, 3)]
    max_tuple = max(tab2, key=lambda x: x[0])
    print(max_tuple)
    >>> (1.0, 0)
    Ici on on dit à la function max() de regarder uniquement la première valeur de chaque couple (x) et donc de determiner le max sur cette valeur uniquement.

    Pour récupérer l'indice de ce couple il suffit d'utiliser la method index() des listes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print(tab2.index(max_tuple))
    >>> 0
    Voilà

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Points : 30
    Points
    30
    Par défaut trouver le max dans une liste
    merci

    max_tuple = max(tab2, key=lambda x: x[0]) marche bien

    par contre si j'ai

    tab2 [(0.0069292694612682615, 1), (0.0036910345729846972, 2), (0.0026851198246516939, 3)]

    je recupere bien (0.0069292694612682615, 1)

    mais print(tab2.index(max_tuple)) donne 0

    je devrai avoir 1

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Points : 30
    Points
    30
    Par défaut
    max_tuple[1] renvoie l'indice

    c'est ok

  5. #5
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Citation Envoyé par peterpan3000 Voir le message

    je recupere bien (0.0069292694612682615, 1)

    mais print(tab2.index(max_tuple)) donne 0

    je devrai avoir 1
    La sortie attendee est bien 0 et non 1 car c'est la position dans la liste du couple (0.0069292694612682615, 1) qui est renvoyé par la method index(). En python, on compte bien à partir de 0. J'ai mal lu la question visiblement. Au temps pour moi.

Discussions similaires

  1. Fonction récursive trouver le max dans une liste.
    Par shirohige dans le forum Lisp
    Réponses: 17
    Dernier message: 17/09/2014, 19h54
  2. Trouver la position d'un objet dans une List
    Par Mister Nono dans le forum Langage
    Réponses: 3
    Dernier message: 03/06/2008, 14h53
  3. Trouver une valeur dans une liste
    Par Erwane dans le forum Scheme
    Réponses: 11
    Dernier message: 31/03/2008, 21h19
  4. Trouver une valeur majoritaire dans une liste
    Par gregcat dans le forum Langage
    Réponses: 1
    Dernier message: 22/08/2007, 17h48
  5. chercher un max et min dans une liste de type vector
    Par sandy07 dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 29/05/2007, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo