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 :

Listes 2D et index associés


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    retraité (ex ingénieur electronique)
    Inscrit en
    Avril 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité (ex ingénieur electronique)

    Informations forums :
    Inscription : Avril 2020
    Messages : 6
    Par défaut Listes 2D et index associés
    Bonjour à toutes et tous.
    Je m'initie à [pyrex] et donc je tâtonne pour trouvez des syntaxes répondant à des besoins particuliers.
    Je suis en train de creuser les listes et les index.

    Voilà mon problème du moment.
    Dans une liste de 3 éléments, chacun de ces éléments étant un tuple mixte (1 texte et un nombre), je voudrait identifier l'index du tuple contenant un des textes (pour l'instant, je néglige le cas où le texte recherché ne serait pas dans la liste. A chaque jour suffit sa peine...)
    Voilà le petit test unitaire que j'ai préparé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    liste=[['a',1],['b',2],['c',6]]
    alpha=liste.index('b')
    print(alpha)
    C'est la ligne alpha= qui me pose problème.Je m'attendis à récupérer le 1, index du tuple contenant le 'b' recherché. Mais je n'y parviens pas, et même en essayant diverses syntaxes pour l'instruction définissant alpha (j'en ai essayé beaucoup, avec des crochets, des doubles crochets, des parenthèse, etc etc... mais aucun ne fonctionne.
    Merci de vos précieux conseils à un débutant de ce langage...
    JM

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,;

    .index va rechercher la position de l'objet passé en argument.
    Avec une liste de listes, ces objets sont des listes.
    Çà trouvera ['b',2] mais certainement pas 'b'.

    Pour trouver la position de la liste qui commence par "b', il va falloir faire une boucle pour tester chaque élément.

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

  3. #3
    Membre à l'essai
    Homme Profil pro
    retraité (ex ingénieur electronique)
    Inscrit en
    Avril 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité (ex ingénieur electronique)

    Informations forums :
    Inscription : Avril 2020
    Messages : 6
    Par défaut
    Merci pour votre réponse rapide.
    J'avais vu qu'il était possible de chercher un tuple par index() si on connaît les 2 donnés du tuple.
    Donc un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alpha=liste.index(['b',2])
    fonctionne et me trouve bien l'index alpha=1 mais voilà, dans mon exemple le 2 n'est pas une constante mais une valeur inscrite par calcul... Donc variable et inconnue au moment de la recherche de l'index.
    N'y aurait il pas moyen de décrire le tuple pas[('b', xxxx)] où xxxx dirait "n'importe quoi"?
    Il y a des fonction type any ou all mais je ne maîtrise pas...
    Merci

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,

    Citation Envoyé par JMMO59 Voir le message
    N'y aurait il pas moyen de décrire le tuple pas[('b', xxxx)] où xxxx dirait "n'importe quoi"?
    Ce moyen s'appelle "programmer".

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

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut


    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    x = 2
    liste = [['a', 1], ['b', x], ['c', 6]]
    index_liste = liste.index(['b', x])
    index_b = liste[index_liste].index('b')
     
    print(index_b) #0
     
    print(liste[index_liste][index_b]) # b

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,

    Certes mais n'importe quoi n'est pas une valeur bien définie (par x).
    C'est une liste qui commence par 'b' dont le deuxième item est inconnu.
    Un peu comme "*".

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

  7. #7
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Vous pouvez vous en sortir en récréant simplement une liste intermédiaire, qui contient uniquement le premier terme de chaque sous-liste (car au passage notée comme ce la avec des crochets, votre liste contient elle-même des liste, et pas des tuples).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    liste=[['a',1],['b',2],['c',6]]
    liste_des_1er_termes = [ elt[0] for elt in liste ]
    print(liste_des_1er_termes)
    alpha=liste_des_1er_termes.index('b')
    print(alpha)
    Bien évidemment, c'est loin d'être la seule façon de faire.

  8. #8
    Membre à l'essai
    Homme Profil pro
    retraité (ex ingénieur electronique)
    Inscrit en
    Avril 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité (ex ingénieur electronique)

    Informations forums :
    Inscription : Avril 2020
    Messages : 6
    Par défaut
    Citation Envoyé par lg_53 Voir le message
    C'est une piste intéressante. Je creuse ça et je reviens vers vous...
    Merci

  9. #9
    Membre à l'essai
    Homme Profil pro
    retraité (ex ingénieur electronique)
    Inscrit en
    Avril 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité (ex ingénieur electronique)

    Informations forums :
    Inscription : Avril 2020
    Messages : 6
    Par défaut Bravo et merci
    J'ai testé.
    Et avec une adaptation à mon programme complet, ... (roulement de tambour!!!!!)... ça fonctionne.
    Je n'ai pas encore bien compris la formule liste_des_1er_termes = [ elt[0] for elt in liste ] (et je vais analyser pour comprendre) mais c'est ok.
    Un grand merci

  10. #10
    Membre confirmé Avatar de AvySamaj
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 118
    Par défaut
    Dans le code de lg_53 la partie du code de la forme [ i[0] for i in list() ] est une compréhension de liste/list comprehension.
    Avec i[0] il sélectionne tous les éléments à l'indice 0 de chaque tuple de la liste.

    Au passage tous les itérables peuvent-être utilisés à travers ces compréhensions: les dict(), tuple(), set(), str(), list().

Discussions similaires

  1. Index associé a chaque combobox
    Par User dans le forum Delphi
    Réponses: 2
    Dernier message: 24/04/2007, 17h07
  2. Extraire une partie d'une liste grâce aux index
    Par Matt630 dans le forum Prolog
    Réponses: 7
    Dernier message: 14/12/2006, 10h05
  3. Liste d'objet/index triés
    Par michaelbob dans le forum Langage
    Réponses: 15
    Dernier message: 14/08/2006, 12h10
  4. [Débutant] liste deroulante/champs texte associe
    Par anassyto dans le forum Access
    Réponses: 2
    Dernier message: 24/07/2006, 12h42
  5. [Débutant] Liste avec des valeurs associées aux string
    Par Bouillou dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/03/2006, 18h11

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