Alan Gauld wrote: >>The "x for x in y:" syntax makes it harder to follow for learners, > > Read about list comprehensions first. > It helps if you studied sets in math at school. The format is > somewhat like the math notation for defining a set. But FWIW it took me > a long time to get used to that syntax too.
To grok list comprehensions it helps to write the equivalent for loops first. You can mechanically convert items = [] for x in "abcd": if x < "d": if x != "b": items.append(x) to items = [x for x in "abcd" if x < "d" if x != "b"] The for loops and ifs stay in place, the expression passed to append() in the innermost loop moves to the beginning. Another example: items = [] for x in "abcd": if x < "d": for y in x + x.upper(): if y != "A": items.append(y*2) This becomes items = [y*2 for x in "abcd" if x < "d" for y in x + x.upper() if y != "A"] Real-world list comprehensions tend to be less complicated, but to understand them you just have to reverse the conversion: items = [y*2 for x in "abcd" if x < "d" for y in x + x.upper() if y != "A" # append y*2 ] _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor