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 l'index ligne d'un tuple 2 dim [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut Trouver l'index ligne d'un tuple 2 dim
    Bonjour
    J'ai un tuple tup de tuple de float. L lignes et C colonnes.
    Je veux trouver l'index de la ligne qui contient la valeur min en 1° colonne.
    L et C pouvant être grands, je ne veux pas sorter l'ensemble mais seulement extraire la bonne ligne.
    Je trouve le min de la 1° colonne avec min(tup[:1]).
    Mon pb consiste à partir de cette valeur à trouver l'index de la ligne. Bien sûr, tup.index() ne fonctionne pas
    Quelqu'un a une idée ?
    Yves

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 715
    Par défaut
    Salut,

    Vous pourriez déjà faire une boucle sur les index et chercher l'index dont la valeur est la plus petite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    L = 1, 2, 3, 0, 4
    ix = L[0]
    for i in range(len(L)):
         if L[i] < ix:
            ix = i
    print(ix)
    Si la question est de faire faire cette boucle là avec la fonction min, c'est un peu la même chose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    L = 1, 2, 3, 0, 4
    print(min(range(len(L)), key=lambda i: L[i]))
    mais si vous ne comprenez pas la syntaxe, çà ne va pas vous aider.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    min(enumerate(tup),key=lambda x:x[1][0])[0]
    Le code de wiztricks est plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    min(range(len(tup)),key=lambda i:tup[i][0])

  4. #4
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    Merci à tous les 2 pour vos suggestions.
    Pas de pb avec la lambda
    Je voulais éviter de faire une boucle for et encore plus un if. C'est la raison pour laquelle je cherche une built-in équivalente à tup.index() pour un tuple de tuple.
    Je vais faire des tests de rapidité pour trouver la meilleure implémentation

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    Après une sieste, j'ai les idées plus claires ...
    le key étant l'entrée 0 (1er colonne ?)... c'est plus simple en fait, mais probablement moins efficace.


  6. #6
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    Finalement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    indice = [a[0] for a in tup].index(min([a[0] for a in tup]))
    Merci à tous les 2

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    Citation Envoyé par ypcman Voir le message
    Finalement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    indice = [a[0] for a in tup].index(min([a[0] for a in tup]))
    Merci à tous les 2
    ouais .....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/02/2010, 02h40
  2. [JTextPane] trouver fin de ligne
    Par Tentative dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 17/01/2006, 07h55
  3. [Débutant][indexes]Trouver les indexes d'une table
    Par Gromitou dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 13/12/2005, 17h50
  4. [IB5.5] comment trouver les indexes
    Par inconu dans le forum InterBase
    Réponses: 3
    Dernier message: 06/10/2005, 08h45
  5. INDEX LIGNE
    Par javaSudOuest dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/09/2005, 14h55

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