Yes. The following is a lot more concise:
a = [1, 2, 3, 4]
print([v*v for v in reversed(a) if v*v % 2 == 0]) a = [1, 2, 3, 4]
print([v*v for v in reversed(a) if v*v % 2 == 0]) FOURTH-> print([THIRD-> v*v for v in FIRST-> reversed(a) if SECOND-> v*v % 2 == 0])
Which is all over the place. I'd rather see: a = [1, 2, 3, 4]
a = reversed(a)
a = [v*v for v in a]
a = [w for w in a if a % 2 == 0]
print(a)I often use generator expressions for the intermediate values (so I don't allocate a new list for each step), but I find this to be much more readable.