Отсутствующие циклические перестановки числовых массивов - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть numy массивы, содержащие по 2 поплавка в каждом:

Unit_1 = [40000.0, 47000.0]
Unit_2 = [12000.0, 14000.0]
Unit_3 = [16000.0, 18000.0]

Я хочу построить перестановку для комбинации единиц на основе их значений, например:

[(40000, 12000, 16000), (40000, 12000, 18000), (40000, 14000, 160000), (40000, 14000, 18000).........]

получение всех возможных перестановок.

Я использую следующее:

list(list(zip(r, p, q)) for (r, p,q) in zip(repeat(Unit_1), permutations(Unit_2), permutations(Unit_3)))

вывод, который он дает:

[[(40000.0, 12000.0, 16000.0), (47000.0, 14000.0, 18000.0)], [(40000.0, 14000.0, 18000.0), (47000.0, 12000.0, 16000.0)]]

Как я могу получить оставшиеся перестановки?

1 Ответ

0 голосов
/ 11 сентября 2018

Кажется, вам не нужны перестановки, но декартово произведение из 3 списков. Используйте itertools.product.

items = list(itertools.product(Unit_1, Unit_2, Unit_3))

Чтобы генерировать перестановки, вам нужны перестановки каждого элемента из вышеуказанной коллекции. Итак, что-то вроде

perms = sum((list(permutations(item)) for item in items), [])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...