我在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]]]
有什么提示吗?
答案 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,一个非可变的对象更有意义。