Python - n维立方体的角坐标

6 投票
1 回答
2835 浏览
提问于 2025-04-17 05:54

我正在尝试从每个维度的最小值和最大值列表中获取一个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)]

撰写回答