Zdravím,
ještě doplním Petrův mail. Myslím, že pro pochopení je šikovné spustit si
ipython, nejasné části kódu vyzkoušet a poté se to snažit pochopit jako celek.

    from itertools import islice, tee, chain

    def fibonacci():
        # vraci generator object
        # napr. pro output = [0, 1, 2] bude generator obsahovat polozky 0 az 2
        def deferred_output():
            for i in output:
                yield i

        # fce tee() prijima jako prvni argument iterable object a
        # jako druhy argument pocet nezavislych iteratoru, ktere vrati jako 
tuple
        # tj. result, c1, c2 maji stejny obsah tj. to co vraci deferred_output()
        result, c1, c2 = tee(deferred_output(), 3)

        # fce map() spusti fci add(), ktere postupne predava jako prvni argument
        # polozky z prvniho iteratoru a jako druhy argument polozky z druheho
        # iteratoru, vraci pole s vysledky fce map()
        #
        # fce islice() prijme iterator c2 a vrati iterator, ktery obsahuje jeho
        # polozky od 1 do konce
        paired = map(add, c1, islice(c2, 1, None))

        # fce chain() spoji predane iteratory a vrati je jako jeden
        output = chain([0, 1], paired)
        return result

    print(list(islice(fibonacci(), 50)))

         S pozdravem Jan Fuchs

--
/**************************************************************
*   _    Žádný program není bezchybný, dokonalý ani nejlepší, *
*  °v°   to samé platí i o lidech a nejen o nich.             *
* /(_)\                                      -- Jan Fuchs --  *
*  ^ ^                                                        *
*        http://www.fuky.org   Jabber: [email protected] *
**************************************************************/
_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem