【问题标题】:How to create an n*n grid of coordinates?如何创建一个 n*n 坐标网格?
【发布时间】:2019-01-13 09:05:46
【问题描述】:

我在 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]]]

有什么建议吗?

【问题讨论】:

    标签: python python-2.7 coordinates


    【解决方案1】:

    如果你想要一个列表理解,这会为你做。

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

    或者,如果你想使用 for 循环,

    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]]
    

    【讨论】:

      【解决方案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,非可变对象更有意义。

      【讨论】:

        猜你喜欢
        • 2020-02-22
        • 1970-01-01
        • 2015-05-03
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-20
        相关资源
        最近更新 更多