Un code que j'ai mis du temps à comprendre

Liste des GroupesRevenir à fcl python 
Sujet : Un code que j'ai mis du temps à comprendre
De : ast (at) *nospam* invalid (ast)
Groupes : fr.comp.lang.python
Date : 07. Dec 2021, 11:49:21
Autres entêtes
Organisation : Guest of ProXad - France
Message-ID : <61af2e22$0$28605$426a34cc@news.free.fr>
User-Agent : Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Thunderbird/91.3.2
Trouvez ce que fait le code suivant ?
(sans l'éxécuter bien sur)
 >>> n = 3
 >>> x = range(n ** 2),
 >>> xn = list(zip(*[iter(x)] * n))
 >>> xn
Réponse:
Tout d'abord dans le *[iter(x)] * n c'est la
2ème étoile (multiplication) qui est prioritaire
sur la 1ère (splash), ça n'a rien d'évident
On se retrouve donc avec:
[iter(x), iter(x), iter(x)]
mais c'est le même objet itérateur qui est répété
3 fois, équivalent à it = iter(x) puis [it, it, it]
après list(zip(it, it, it))
-> [(0, 1, 2), (3, 4, 5), (6, 7, 8)]
la fonction réalisée est donc un "tronçonnage" de x

Date Sujet#  Auteur
7 Dec 21 * Un code que j'ai mis du temps à comprendre5ast
8 Dec 21 +* Re: Un code que j'ai mis du temps à comprendre3Nicolas
8 Dec 21 i`* Re: Un code que j'ai mis du temps à comprendre2ast
8 Dec 21 i `- Re: Un code que j'ai mis du temps à comprendre1Nicolas
9 Dec 21 `- Re: Un code que j'ai mis du temps à comprendre1ast

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal