Path: ...!weretis.net!feeder6.news.weretis.net!4.us.feeder.erje.net!2.eu.feeder.erje.net!feeder.erje.net!news.uzoreto.com!aioe.org!Faqf6A55NG1s8DSVkh3L9A.user.46.165.242.75.POSTED!not-for-mail From: Alain Ketterlin Newsgroups: fr.comp.lang.python Subject: Re: Liste de listes Python Date: Fri, 22 Oct 2021 18:03:09 +0200 Organization: =?utf-8?Q?Universit=C3=A9?= de Strasbourg Message-ID: <877de559oi.fsf@universite-de-strasbourg.fr.invalid> References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: gioia.aioe.org; logging-data="52339"; posting-host="Faqf6A55NG1s8DSVkh3L9A.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org"; User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) X-Notice: Filtered by postfilter v. 0.9.2 Cancel-Lock: sha1:XDoVkRMMAQ9a8eI1qSVTsYTNwc0= Bytes: 3381 Lines: 72 Olivier92410 writes: > Bonjour =C3=A0 Tous, > Question sur le fonctionnement de liste de listes en Python. Voici le code > suivant: > ini_list =3D [[1, 2, 5, 10, 7], > [4, 3, 4, 3, 21], > [45, 65, 8, 8, 9, 9]] > > element =3D 1 > > l =3D [[]] > est_dans_liste =3D (element in sublist for sublist in l) Cette instruction cr=C3=A9e un g=C3=A9n=C3=A9rateur, ce que tu peux voir av= ec "type(est_dans_liste)" par exemple. Un g=C3=A9n=C3=A9rateur est un objet qui... g=C3=A9n=C3=A8re des objets =C3= =A0 condition qu'on it=C3=A8re 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=C3=A0 tu convertis ton objet-g=C3=A9n=C3=A9rateur en bool=C3=A9en, et tou= s les g=C3=A9n=C3=A9rateurs se convertissent en True (m=C3=AAme ceux qui ne produiront aucun objet). C'est normal : la conversion n'est pas suppos=C3=A9e modifier l'objet, et parcourir un g=C3=A9n=C3=A9rateur le modifie d=C3=A9finitivement. > Dans cet exemple, je cherche =C3=A0 savoir si la valeur num=C3=A9rique "1= " est pr=C3=A9sente > dans la liste de listes l (liste vide en l'occurence ici) Ton g=C3=A9n=C3=A9rateur te permet d'avoir la r=C3=A9ponse pour chaque sous= -liste. Dans ton exemple, il va produire un bool=C3=A9en False. Avec la liste non-vide donn=C3=A9e plus haut, ton g=C3=A9n=C3=A9rateur va produire trois bool=C3= =A9ens, successivement True False False. > Le r=C3=A9sultat de ce code est "e;ok"e;. Je ne sais pas d'o=C3=B9 viennent tes "e;", ce serait bien que tu nous les =C3=A9pargnes. > Ce qui est bien =C3=A9videmment 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=C3=A9n=C3=A9rateur, tu peux l'utiliser comme une l= iste (sauf qu'il est cram=C3=A9 apr=C3=A8s le parcours). Il te manque donc un ni= veau de parcours : tu as les r=C3=A9ponses pour chaque sous-liste, tu cherches dans la liste de ces r=C3=A9ponses. Tu peux faire True in (element in sublist for sublist in l) ou any (element in sublist for sublist in l) -- Alain.