如何创建一个n * n的坐标网格?

时间:2019-01-12 15:03:09

标签: python python-2.7 coordinates

我在Python 2.7中无法制作8 * 8的坐标网格

为演示起见,我试图制作一个3x3的网格,如下所示:

grid=[]

for col in xrange(3):
    grid.append([col])
    for row in xrange(3):
        grid[col].append([row])

print grid

我想要拥有:

grid = [[0,0],[0,1],[0,2],[1,0],[1,1],[1,2],[2,0],[2,1],[2,2]]

但是我得到的是:

grid = [[0, [0], [1], [2]], [1, [0], [1], [2]], [2, [0], [1], [2]]]

有什么提示吗?

2 个答案:

答案 0 :(得分:6)

如果您想要列表理解,这将为您完成。

grid = [[row, col] for row in range(3) for col in range(3)]

或者,如果您要用于循环,

grid = []
for row in range(3):
    for col in range(3):
        grid.append([row, col])

其中任何一个都为grid赋予此值:

[[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]

答案 1 :(得分:2)

我知道这是一个较晚的答案,但是另一个优雅的解决方案是使用itertools.product

import itertools

grid = list(itertools.product(xrange(3), xrange(3)))

对于Python 3用户,您可以将xrange替换为range

您得到:

[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

在这里,坐标是元组。 IMO,一个非可变的对象更有意义。