Beginner's question about string's join() method

Diez B. Roggisch deets at nospam.web.de
Fri Aug 29 08:51:20 EDT 2008


Macygasp wrote:

> Hi,
> 
> Can anybody tell me why and how this is working:
> 
>>>> ','.join(str(a) for a in range(0,10))
> '0,1,2,3,4,5,6,7,8,9'
> 
> I find this a little weird because join takes a sequence as argument;
> so, it means that somehow, from the "str(a) ... " expression, a
> sequence can be generated.
> 
> If I write this:
>>>> (str(a) for a in range(0,10))
> <generator object at 0x7f62d2e4d758>
> it seems i'm getting a generator.
> 
> Can anybody explain this to me, please?

string.join takes an iterable. A generator is an iterable. Expressions of
the form "<exp> for <vars> in <iterable>" are called "generator
expressions", and yield a generator.

Thus your code works.

Diez



More information about the Python-list mailing list