Steve Nelson wrote:
> Indeed - as I now have a function:
> 
> def nsplit(s, n):
>   return [s[i:i+n] for i in range(0, len(s), n)]
> 
> Incidentally I am currently going with:
> 
> def nsplit(s, n):
>   while s:
>    yield s[:n]
>    s = s[n:]

You can write the generator function to use the same method as the list 
comp and avoid creating all the intermediate (partial) lists:

def nsplit(s, n):
   for i in range(0, len(s), n):
     yield s[i:i+n]

One of the cool things about generators is that they make it so easy to 
maintain state between yields.

In Python 2.4, all you have to do is rewrite your original list comp to 
a generator comprehension:

def nsplit(s, n):
   return (s[i:i+n] for i in range(0, len(s), n))

Kent

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to