Op 17 oktober 2010 16:37 heeft Geert Stappers <stapp...@stappers.nl>
het volgende geschreven:
> Op 20101017 om 15:12 schreef Thomas Miedema:
>> 2010/10/17 Wouter van Heyst <lars...@larstiq.dyndns.org>
>> > On Sun, Oct 17, 2010 at 14:41:38 +0200, Geert Stappers wrote:
>> > > Op 20101017 om 13:35 schreef Dirkjan Ochtman:
>> > > > 2010/10/17 Geert Stappers <stapp...@stappers.nl>:
>> > > > > Misschien zit het al in Python en weet ik niet hoe het heet.
>> > > > >
>> > > > > Wat is de Python naam van "breed venster over lijst schuiven"?
>> > > >
>> > > > itertools!
>> > > >
>> > > > http://docs.python.org/library/itertools.html
>> > >
>> > > Wie wil er wat meer over vertellen?
>> >
>> > De voorbeelden in de documentatie herbergen een sliding window
>> > implementatie, die kan je zo overnemen?
>
> Nou, ik denk dat de documentie voorbeelden verbergt  ;-)
> Althans, het voorbeeld met 'take' krijg ik niet aan de praat.
>
> De discussie heeft me ondertussen wel keywords opgeleverd
> die ik aan Google kon voeren.
>
>  python sliding window iterator
>
> En nu heb ik het warme gevoel
> dat ik niet alleen was met mijn probleem     :-)
>
>> for i in range(len(lijst) - 3):
>>   print lijst[i:i+3]
>
>
> Niet zo Pythontic als ik wilde, maar wel waar ik mee verder ga.

En zo?

class Window(object):
        def __init__(self, n):
                self.n = n

        def __call__(self, list):
                ret = []
                for i in list:
                        if len(ret) == self.n:
                                yield ret
                                ret = ret[1:]
                        ret.append(i)
                if len(ret) == self.n:
                        yield ret

lijst = [1, 2, 3, 3, 4, 10 , 3 ,2, 2, 1]

w=Window(3)
for three in w(lijst):
        print three


-- 
Rob W. W. Hooft || r...@hooft.net || http://hooft.net/rob
_______________________________________________
Python-nl mailing list
Python-nl@python.org
http://mail.python.org/mailman/listinfo/python-nl

Antwoord per e-mail aan