Python - n维立方体的角坐标
我正在尝试从每个维度的最小值和最大值列表中获取一个n维立方体的坐标。我可以通过循环来获取角落的坐标,但我想要一个可以适用于任意维度的通用方法。
举个例子:
mins = [-1,-2,-3]
maxes = [1,2,3]
这将给出以下坐标:
(-1, -2, -3), (-1, -2, 3), (-1, 2, -3), (-1, 2, 3),
(1, 2, 3), (1, 2, -3), (1, -2, 3), (1, -2, -3)
这实际上是在找两个列表之间的所有路径,每个索引从一个列表中选择一个值。我见过一些算法可以计算路径的数量或最快的路径,但我还没有找到一个可以列出所有可能路径的算法。
我想 itertools 可能会在解决方案中发挥作用,但我不知道如何使用乘积、排列和组合来得到想要的结果。到目前为止,最接近的结果是:
list(itertools.product((xmin, xmax), (ymin, ymax), (zmin, zmax)))
1 个回答
12
你已经很接近了,*zip( ... )
就是你想要的东西:
>>> list(itertools.product(*zip([-1,-2,-3],[1,2,3])))
[(-1, -2, -3), (-1, -2, 3), (-1, 2, -3), (-1, 2, 3), (1, -2, -3), (1, -2, 3), (
, 2, -3), (1, 2, 3)]