Re: Liste de listes Python

Liste des GroupesRevenir à fcl python 
Sujet : Re: Liste de listes Python
De : alain (at) *nospam* universite-de-strasbourg.fr.invalid (Alain Ketterlin)
Groupes : fr.comp.lang.python
Date : 22. Oct 2021, 18:03:09
Autres entêtes
Organisation : Université de Strasbourg
Message-ID : <877de559oi.fsf@universite-de-strasbourg.fr.invalid>
References : 1
User-Agent : Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)
Olivier92410 <nospam_olivier.debeyssac@gmail.com.invalid> writes:

Bonjour à Tous,
Question sur le fonctionnement de liste de listes en Python. Voici le code
suivant:
ini_list = [[1, 2, 5, 10, 7],
            [4, 3, 4, 3, 21],
            [45, 65, 8, 8, 9, 9]]
>
element = 1
>
l = [[]]
est_dans_liste = (element in sublist for sublist in l)

Cette instruction crée un générateur, ce que tu peux voir avec
"type(est_dans_liste)" par exemple.

Un générateur est un objet qui... génère des objets à condition qu'on
itère dessus, par exemple avec

    for b in est_dans_liste:
        print (b)

ou simplement

    print (list(est_dans_liste))

if est_dans_liste:
    print("ok")

Là tu convertis ton objet-générateur en booléen, et tous les générateurs
se convertissent en True (même ceux qui ne produiront aucun objet).
C'est normal : la conversion n'est pas supposée modifier l'objet, et
parcourir un générateur le modifie définitivement.

Dans cet exemple, je cherche à savoir si la valeur numérique "1" est présente
dans la liste de listes l (liste vide en l'occurence ici)

Ton générateur te permet d'avoir la réponse pour chaque sous-liste. Dans
ton exemple, il va produire un booléen False. Avec la liste non-vide
donnée plus haut, ton générateur va produire trois booléens,
successivement True False False.

Le résultat de ce code est "e;ok"e;.

Je ne sais pas d'où viennent tes "e;", ce serait bien que tu nous les
épargnes.

Ce qui est bien évidemment faux. Il y a donc quelque chose que je n'ai
pas saisi dans le fonctionnement des listes. Est ce que l'un d'entre
vous peut me guider ? Merci beaucoup

Si tu veux utiliser un générateur, tu peux l'utiliser comme une liste
(sauf qu'il est cramé après le parcours). Il te manque donc un niveau de
parcours : tu as les réponses pour chaque sous-liste, tu cherches dans
la liste de ces réponses. Tu peux faire

    True in (element in sublist for sublist in l)

ou

    any (element in sublist for sublist in l)

-- Alain.

Date Sujet#  Auteur
22 Oct 21 * Liste de listes Python2Olivier92410
22 Oct 21 `- Re: Liste de listes Python1Alain Ketterlin

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal