getting n items at a time from a generator
Kugutsumen
kugutsumen at gmail.com
Thu Dec 27 08:31:00 EST 2007
On Dec 27, 7:24 pm, Terry Jones <te... at jon.es> wrote:
> >>>>> "Kugutsumen" == Kugutsumen <kugutsu... at gmail.com> writes:
>
> Kugutsumen> On Dec 27, 7:07 pm, Paul Hankin <paul.han... at gmail.com> wrote:
>
> >> On Dec 27, 11:34 am, Kugutsumen <kugutsu... at gmail.com> wrote:
>
> >> > I am relatively new the python language and I am afraid to be missing
> >> > some clever construct or built-in way equivalent to my 'chunk'
> >> > generator below.
>
> Kugutsumen> Thanks, I am going to take a look at itertools. I prefer the
> Kugutsumen> list version since I need to buffer that chunk in memory at
> Kugutsumen> this point.
>
> Also consider this solution from O'Reilly's Python Cookbook (2nd Ed.) p705
>
> def chop(iterable, length=2):
> return izip(*(iter(iterable),) * length)
>
> Terry
> [snip code]
>
> Try this instead:
>
> import itertools
>
> def chunk(iterator, size):
> # I prefer the argument order to be the reverse of yours.
> while True:
> chunk = list(itertools.islice(iterator, size))
> if chunk: yield chunk
> else: break
>
Steven, I really like your version since I've managed to understand it
in one pass.
Paul's version works but is too obscure to read for me :)
Thanks a lot again.
More information about the Python-list
mailing list