Creating 2D coordinates map in Python

aemdy picture aemdy · Jan 31, 2012 · Viewed 24.3k times · Source

I'm not looking for solution, I'm looking for a better solution or just a different way to do this by using some other kind of list comprehension or something else.

I need to generate a list of tuples of 2 integers to get map coordinates like [(1, 1), (1, 2), ..., (x, y)]

So I have the following:

width, height = 10, 5

Solution 1

coordinates = [(x, y) for x in xrange(width) for y in xrange(height)]

Solution 2

coordinates = []
for x in xrange(width):
    for y in xrange(height):
        coordinates.append((x, y))

Solution 3

coordinates = []
x, y = 0, 0
while x < width:
    while y < height:
        coordinates.append((x, y))
        y += 1
    x += 1

Are there any other solutions? I like the 1st one most.

Answer

Andrew Clark picture Andrew Clark · Jan 31, 2012

Using itertools.product():

from itertools import product
coordinates = list(product(xrange(width), xrange(height)))