they are just another way of producing a new list.
if a = [1,2,3,4,5,6,7,8], we could produce a list of the squared elements of a:
sqrs = [] # an empty list
for x in a: # for each element of a
b.append(x*x) # add x*x to the list b
list comprehensions just give you a more concise mechanism to do it:
b = [ x*x for x in a] # b is the same list as produced above.
if we have some function def
def f(x):
return x*x*x + 17
we can produce a list of f(i) for each i in a
b = [f(i) for i in a] which is the list [f(1),f(2)...f(8)]
we can even add a condition:
b = [x for x in a if x % 2 == 0]
this is the same as:
b = []
for x in a:
if x % 2 == 0:
b.append(x)
a list comprehension is only a shorter (different) way of doing it, despite the name,
nothing really new. play with a few in idle. a = [1,2,3,4], b = [x/2 for x in a],
and print b. I hope I haven't made things worse...