簡體   English   中英

如何制作所有列和行的坐標列表

[英]How to make a list of the coordinates of all columns and rows

假設我有一個nxn網格,並且我想要一個 function,它通過在 python 中以n作為輸入來生成所有列和行的列表。 通過列列表,我的意思是每列都表示為自己的列表,元素是列中元素的坐標。 (或者每列可以是一組坐標,這也可以)

我可以使用兩個列表推導來做到這一點,

x = [[ (i, j) for j in range(n)] for i in range(n)] + [[ (i, j) for i in range(n)] for j in range(n)]

n=3時,這會產生一個包含 9 個元素的列表,每個元素都是 3 個坐標的列表。

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

我想知道是否有更清潔的方法來做同樣的事情,也許使用 itertools 或類似的模塊。

不完全確定這是否是您正在尋找的,但您可以嘗試itertools.product
例如

>>> from itertools import product
>>> n = 3

>>> list(product(range(n),range(n)))
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

>>> [list(product(range(n),range(n)))[n*i:n*i+n] for i in range(n)]
[[(0, 0), (0, 1), (0, 2)], [(1, 0), (1, 1), (1, 2)], [(2, 0), (2, 1), (2, 2)]]

>>> [list(product(range(n),range(n)))[i::n] for i in range(n)]
[[(0, 0), (1, 0), (2, 0)], [(0, 1), (1, 1), (2, 1)], [(0, 2), (1, 2), (2, 2)]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM