[f(x, y) for x in X for y in Y] is equivalent to: [f(x, y) for x, y in cartesian(X, Y)] I never found any real use for list comprehensions with more than one dimension. When I use nested loops they are usually for something that cannot be expressed as a list comprehension. Oren