What's the difference?

Thomas Jollans thomas at jollans.com
Thu Jun 10 17:22:12 EDT 2010


On 06/10/2010 10:47 PM, Anthony Papillion wrote:
> Someone helped me with some code yesterday and I'm trying to
> understand it. The way they wrote it was
> 
> subjects = (info[2] for info in items)

This is a generator expression, and it creates a generator object. If
you loop over it (subjects), you will get all the subjects (or whatever
info[2] is), one by one.

> 
> Perhaps I'm not truly understanding what this does. Does this do
> anything different than if I wrote
> 
> for info[2] in items
>    subject = info[2]

These two snippets do the same thing:

# No. 1.
subjects = (info[2] for info in items)
for subject in subjects:
    print (subject)

# No. 2.
for info in items:
    subject = info[2]
    print (subject)


However, you could also pass the subjects variable to another function
and have it iterate over them - that's something that the simple loop
can't do just like that.

> 
> Thanks!
> Anthony




More information about the Python-list mailing list