Перестановки Python в нескольких списках целых - PullRequest
0 голосов
/ 13 мая 2018

У меня есть словарь списков, где каждый список представляет все возможные значения для переменной (ключа):

# dictionary of lists
values = {1: [4, 7, 8], 
          2: [1, 3], 
          3: [7, 5, 6], 
          4: [2]}

Я хочу создать кортежи, содержащие все возможные перестановки этих значений (декартово произведение), чтобы я мог определить, какие комбинации значений являются правильными.

# example
perms = [(4, 1, 7, 2), (4, 1, 5, 2), (4, 1, 6, 2), (4, 3, 7, 2), ... , (8, 3, 6, 2)]

Есть ли простой способ сделать это? Я задал другую проблему, и она была решена с помощью перестановок itertools. Однако я не совсем понимаю, как выбрать одно число из нескольких списков для перестановки.

1 Ответ

0 голосов
/ 13 мая 2018

Для этого нужен product.

>>> from itertools import product
>>> list(product(*values.values()))
[(4, 1, 7, 2),
 (4, 1, 5, 2),
 (4, 1, 6, 2),
 (4, 3, 7, 2),
 (4, 3, 5, 2),
 ...
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...