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 :

[débutant] vérifier la présence d'un entier dans une liste de liste (?) [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Programmateur informatique Angular et Java en présentiel ou télétravail.
    Inscrit en
    Octobre 2004
    Messages
    58
    Détails du profil
    Informations professionnelles :
    Activité : Programmateur informatique Angular et Java en présentiel ou télétravail.

    Informations forums :
    Inscription : Octobre 2004
    Messages : 58
    Par défaut [débutant] vérifier la présence d'un entier dans une liste de liste (?)
    Bonjour,

    J'essaye de vérifier s'il y a des 0 dans une liste afin le cas échéant de pouvoir signaler que toutes les valeurs de la liste ont bien été modifiées.


    voici ma liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    lignes = 3 # len(abscisse)
    colonnes = 3 # len(ordonné)
    plateau = [[0 for l in range(lignes)] for c in range(colonnes)]
    le print me sort donc bien une liste rempli de 0 : [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
    (et avec une boucle for j'arrive a l'imprimer en 2D)


    Ma dernière recherche sur google m'a indiqué que pour vérifier la présence de quelque chose on peut utiliser in;

    Mais ce que je fais ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if 0 in plateau:
        print( "il y a encore des 0" )
    else:
        print( "fin" )
    j'ai également essayé avec des boucle for pour parcourir l'index de la liste comme si c'était une liste simple (et non une liste de liste) mais rien ne semble fonctionner.

    Il y a des technique particulière a connaitre ? des noms de fonction à chercher ?

    merci pour l'aide


    edit : changé tableau par liste

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par Demky Voir le message
    Il y a des technique particulière a connaitre ? des noms de fonction à chercher ?
    Dans une liste de listes (ou un tableau à deux dimensions), le repérage de chaque élément se fera avec deux index et des boucles imbriquées.
    Dans votre cas, vérifier qu'il n'y a pas de zéros peut se simplifier en masquant la boucle interne avec 0 in ligne mais la boucle externe demeure car 0 ne sera jamais comparable à une liste de zéros.

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

  3. #3
    Membre averti
    Programmateur informatique Angular et Java en présentiel ou télétravail.
    Inscrit en
    Octobre 2004
    Messages
    58
    Détails du profil
    Informations professionnelles :
    Activité : Programmateur informatique Angular et Java en présentiel ou télétravail.

    Informations forums :
    Inscription : Octobre 2004
    Messages : 58
    Par défaut
    merci pour la réponse !

    Je ne comprend pas trop, ça fait 1h45 que je cherche, j'ai cru avoir trouvé la solution :
    (j'ai pris une liste de liste normal hors liste en compréhension en espérant que ce soit plus facile à comprendre à modifier les valeurs )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    plateau = [[5, 5, 5], [2, 0, 0], [1, 2, 5]] 
     
    for caseLigne in range(len(plateau)) :
        for caseColone in range(len(plateau[caseLigne])) :
            if 0 in range((plateau[caseLigne][caseColone])):
                print( "il y a encore des 0" )
            else:
                print( "fin" )
    mais le code me donne l'inverse et je ne comprend vraiment pas la logique du pourquoi il inverse...
    -> ligne 6 : s'il y a 0 ; écrit ceci
    -> ligne 8 : sinon ; écrit cela

    Comment peut-il faire l'inverse ?
    Si je rajoute un 0, il rajoute une ligne fin et si j’enlève un 0 il rajoute une ligne il y a encore des 0 donc j'en conclu qu'il travaille bien sur mon interval : plateau[0][0] a plateau[2][2]

    Nom : a.png
Affichages : 602
Taille : 41,7 Ko

    edit :

    du coup c'est pareil, si je prend ma liste en compréhension : plateau = [[0 for l in range(lignes)] for c in range(colonnes)] rempli de 0
    il me retourne que des fin

  4. #4
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Salut.

    Tes ranges ne servent à rien et surtout n'ont rien à faire ici.
    Ta double boucle aussi est inutile si tu te sert de in.

    Tu te compliques la vie alors que c'est très simple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> plateau = [[5, 5, 5], [2, 0, 0], [1, 2, 5]] 
    >>> for l in plateau :
    ...     if 0 in l :
    ...         print(l)
    ... 
    [2, 0, 0]

  5. #5
    Membre averti
    Programmateur informatique Angular et Java en présentiel ou télétravail.
    Inscrit en
    Octobre 2004
    Messages
    58
    Détails du profil
    Informations professionnelles :
    Activité : Programmateur informatique Angular et Java en présentiel ou télétravail.

    Informations forums :
    Inscription : Octobre 2004
    Messages : 58
    Par défaut
    Merci beaucoup; je ne comprend pas pourquoi je reste bloqué des heures sur ce genre de détail

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

Discussions similaires

  1. Vérifier la présence d'une feuille dans une collection
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 03/06/2007, 10h26
  2. Réponses: 7
    Dernier message: 13/03/2007, 11h20
  3. Vérifier la présence d'une colonne dans une table
    Par m1sterd dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/11/2006, 11h13
  4. vérifier la présence d'un champ dans un dblookupcombobox
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 7
    Dernier message: 22/09/2005, 10h22
  5. [VS.net] Vérifier le présence d'un caractère dans une chaine
    Par arnolem dans le forum Windows Forms
    Réponses: 15
    Dernier message: 10/09/2005, 15h19

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