Python - угловые координаты n-мерного куба - PullRequest
2 голосов
/ 09 ноября 2011

Я пытаюсь получить координаты 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 Ответ

5 голосов
/ 09 ноября 2011

Вы были довольно близко, *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)]
...