Hello Tutors,
I am having trouble wrapping my mind around nested list comprehensions and am
hoping that someone can either verify my thinking or provide insight as to what
I am doing wrong.
I have a list of objects C1 and each object in the list has a method m() that
will return a list of sub-objects. I would like to create a list that contains
all sub-objects of all members of the C1 collection. If I weren't trying to
use list comprehensions, I would code this as:
result = []
for eachObject in C1:
for eachSubObject in eachObject.m():
result.append(eachSubObject)
I have looked at the examples in the books several times, but none of the
examples on nested list comprehensions show situations where there is a
dependency between the outer loop and the inner loop that are being compressed.
However, what I think I have come up with is:
result = [eachSubObject for eachObject in C1 for eachSubObject in
eachObject.m()]
I am already expecting the "just use the first syntax if that does what you
want" answers - but in this case, I am trying to understand nested list
comprehensions, so I would appreciate an explanation of the list comprehension
syntax.
If this _is_ the correct syntax, this reads very awkwardly to me, and my
initial reaction to this is that it should be expressed as:
result = [eachSubObject for eachSubObject in eachObject.m() for eachObject in
C1]
However, in my testing, this doesn't appear to work. If somone has a way of
reading the nested list comprehension syntax that makes sense, I would
appreciate it if you would share it.
Thanks,
-John
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor