Comments on: Parcourir un itérable par morceaux en Python http://sametmax.com/parcourir-un-iterable-par-morceaux-en-python/ Deux développeurs en vadrouille qui se sortent les doigts du code Wed, 05 Feb 2014 12:15:31 +0000 hourly 1 http://wordpress.org/?v=3.3.1 By: Lujeni http://sametmax.com/parcourir-un-iterable-par-morceaux-en-python/#comment-5392 Lujeni Mon, 21 Jan 2013 23:12:13 +0000 http://sametmax.com/?p=809#comment-5392 Merci Sam ! Enfin compris, la syntaxe étant un peu tordu pour moi et l'unpacking complètement zappé. Un petit refresh ne m'a pas fait de mal :) Merci Sam ! Enfin compris, la syntaxe étant un peu tordu pour moi et l’unpacking complètement zappé. Un petit refresh ne m’a pas fait de mal :)

]]>
By: Sam http://sametmax.com/parcourir-un-iterable-par-morceaux-en-python/#comment-5391 Sam Mon, 21 Jan 2013 22:34:19 +0000 http://sametmax.com/?p=809#comment-5391 La question n'est pas idiote, la preuve, nous avons écrit un article pour y répondre : http://sametmax.com/operateur-splat-ou-etoile-en-python/ La question n’est pas idiote, la preuve, nous avons écrit un article pour y répondre :

http://sametmax.com/operateur-splat-ou-etoile-en-python/

]]>
By: Lujeni http://sametmax.com/parcourir-un-iterable-par-morceaux-en-python/#comment-5390 Lujeni Mon, 21 Jan 2013 21:45:48 +0000 http://sametmax.com/?p=809#comment-5390 Hello Sam, dans ton commentaire pour parcourir un iterable tu reprends la syntaxe de type: <code>izip(*[iter(s)]*n)</code> Question un peu idiote, j'ai du mal a bien comprendre cette syntaxe, les etoiles ont elles une signification? Merci et encore bravo pour le boulot :) Hello Sam,

dans ton commentaire pour parcourir un iterable tu reprends la syntaxe de type:
izip(*[iter(s)]*n)

Question un peu idiote, j’ai du mal a bien comprendre cette syntaxe, les etoiles ont elles une signification?

Merci et encore bravo pour le boulot :)

]]>
By: Sam http://sametmax.com/parcourir-un-iterable-par-morceaux-en-python/#comment-4547 Sam Mon, 24 Dec 2012 00:47:32 +0000 http://sametmax.com/?p=809#comment-4547 Je suis là pour ça. Je suis là pour ça.

]]>
By: Cladmi http://sametmax.com/parcourir-un-iterable-par-morceaux-en-python/#comment-4546 Cladmi Sun, 23 Dec 2012 23:14:54 +0000 http://sametmax.com/?p=809#comment-4546 Bien joué, c'est pour ça que quand je testais avec une liste de string ça marchait, j'étais dans un cas particulier. Donc cette ligne était encore plus compliquée que ce que je pensais. Merci pour les réponses. Bien joué, c’est pour ça que quand je testais avec une liste de string ça marchait, j’étais dans un cas particulier.

Donc cette ligne était encore plus compliquée que ce que je pensais.

Merci pour les réponses.

]]>
By: Sam http://sametmax.com/parcourir-un-iterable-par-morceaux-en-python/#comment-4545 Sam Sun, 23 Dec 2012 23:08:22 +0000 http://sametmax.com/?p=809#comment-4545 Parce que le premier paramètre de <code>chain()</code> doit être un itérable. <pre lang="python">>>> list(chain(1, [2, 3])) Traceback (most recent call last): File "<ipython-input-2-af20e950e88c>", line 1, in <module> list(chain(1, [2, 3])) TypeError: 'int' object is not iterable >>> list(chain((1,), [2, 3])) [1, 2, 3]</pre> Parce que le premier paramètre de chain() doit être un itérable.

>>> list(chain(1, [2, 3]))
Traceback (most recent call last):
  File "<ipython-input-2-af20e950e88c>", line 1, in <module>
    list(chain(1, [2, 3]))
TypeError: 'int' object is not iterable
>>> list(chain((1,), [2, 3]))
[1, 2, 3]
]]>
By: Cladmi http://sametmax.com/parcourir-un-iterable-par-morceaux-en-python/#comment-4543 Cladmi Sun, 23 Dec 2012 22:47:22 +0000 http://sametmax.com/?p=809#comment-4543 Oui erreur de ma part, c'est un tuple et non un générateur. J'ai confondu avec la syntaxe avec les parenthèses pour faire un générateur quand on utilise les listes en intention. Et donc en fait, je me demandais pourquoi tu faisais <code>chain((it.next(),),...)</code> au lieu de <code>chain(it.next(),...)</code> directement. Oui erreur de ma part, c’est un tuple et non un générateur.
J’ai confondu avec la syntaxe avec les parenthèses pour faire un générateur quand on utilise les listes en intention.

Et donc en fait, je me demandais pourquoi tu faisais chain((it.next(),),...) au lieu de chain(it.next(),...) directement.

]]>
By: Sam http://sametmax.com/parcourir-un-iterable-par-morceaux-en-python/#comment-4534 Sam Sun, 23 Dec 2012 16:52:55 +0000 http://sametmax.com/?p=809#comment-4534 Bonjour Cladmi. Je n'ai pas compris la seconde question. Qu'entends tu par "refaire un générateur". Et par "sans" ? Bonjour Cladmi. Je n’ai pas compris la seconde question. Qu’entends tu par “refaire un générateur”. Et par “sans” ?

]]>
By: Cladmi http://sametmax.com/parcourir-un-iterable-par-morceaux-en-python/#comment-4532 Cladmi Sun, 23 Dec 2012 15:31:28 +0000 http://sametmax.com/?p=809#comment-4532 Je trouve que tu passes très vite sur cette ligne avec le 'chain', alors que pour moi, elle n'est pas si évidente que ça. <pre lang="python">chain((it.next(),), islice(it, taille - 1))</pre> - Première question qui m'est venue: pourquoi on fait it.next() et islice(), au lieu de faire que islice() ? J'ai testé et c'est parce que islice() ne lève pas de 'StopIteration', on doit donc faire le it.next() pour que la boucle puisse s'arrêter. - Et l'autre question: pourquoi tu refais un générateur avec le it.next() ? J'ai testé sans pour voir, ça marchait, j'ai testé avec des print partout, et j'ai l'impression que les lectures sont réalisées dans le même ordre avec et sans le générateur. Du coup, là je sais pas. Je trouve que tu passes très vite sur cette ligne avec le ‘chain’, alors que pour moi, elle n’est pas si évidente que ça.

chain((it.next(),), islice(it, taille - 1))

- Première question qui m’est venue: pourquoi on fait it.next() et islice(), au lieu de faire que islice() ?
J’ai testé et c’est parce que islice() ne lève pas de ‘StopIteration’, on doit donc faire le it.next() pour que la boucle puisse s’arrêter.

- Et l’autre question: pourquoi tu refais un générateur avec le it.next() ?
J’ai testé sans pour voir, ça marchait, j’ai testé avec des print partout, et j’ai l’impression que les lectures sont réalisées dans le même ordre avec et sans le générateur. Du coup, là je sais pas.

]]>
By: Sam http://sametmax.com/parcourir-un-iterable-par-morceaux-en-python/#comment-766 Sam Mon, 23 Jul 2012 13:24:26 +0000 http://sametmax.com/?p=809#comment-766 Au passage, si vous vous foutez du format de sortie, on peut aussi utiliser le bien plus court: <pre lang="python">from itertools import izip def morceaux(iterable, taille): return izip(*([iter(iterable)] * taille))</pre> Le comportement de la première implémentation quand taille dépasse la taille de l'itérable est légèrement plus cohérente que celui de la deuxième: celle-ci s'arrête au dernier morceau complet, l'autre déborde sur le morceau le plus petit. Au passage, si vous vous foutez du format de sortie, on peut aussi utiliser le bien plus court:

from itertools import izip
 
def morceaux(iterable, taille):
    return izip(*([iter(iterable)] * taille))

Le comportement de la première implémentation quand taille dépasse la taille de l’itérable est légèrement plus cohérente que celui de la deuxième: celle-ci s’arrête au dernier morceau complet, l’autre déborde sur le morceau le plus petit.

]]>