James Stroud <[EMAIL PROTECTED]> writes:
> def f(n):
>    if n>0:
>      yield n%26
>      for i in f(n/26):
>        yield i

Right, this mutates i though.  Let's say we have a library function
itertools.iterate() and that we ignore (as we do with functions like
"map") that it uses mutation under the clothes:

    def iterate(f, x):
        # generate the infinite sequence x, f(x), f(f(x)), ...
        while True:
            yield x
            x = f(x)

Then we could write:

    from itertools import imap, takewhile
    def snd((a,b)): return b

    def f(n):
        return takewhile(bool,
                         imap(snd,
                              iterate(lambda (a,b): divmod(a,26),
                                      divmod(n,26))))
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to