I understand how the simple list comprehension works eg.:
[x*2 for x in range(5)] # returns [0,2,4,6,8]
and also I understand how the nested
The reason it has 9 numbers is because python treats
[x + y for x in l2 for y in l1 ]
similarly to
for x in l2: for y in l1: x + y
ie, it is a nested loop