"Есть ли способ создать перестановку или произведение списка кортежей в Python?" - PullRequest
0 голосов
/ 09 ноября 2019
lis=[
    (1, 7), (1, 2), (1, 4), (7, 1), (7, 2), (7, 4), (2, 1), (2, 7), (2, 4), (4, 
    1), (4, 7), (4, 2)
]

Предположим, у меня есть приведенный выше список кортежей. Я хочу создать все возможные списки кортежей, такие как [(1,7,1,2),(1,2,1,4) ...]. Каждый кортеж в результирующем списке должен быть перестановкой из 2 кортежей в списке, и результирующий список должен содержать все такие кортежи.

list(permutations(lis,4)) дает результат: [((1, 7), (1, 2), (1, 4), (7, 1)), ((1, 7), (1, 2), (1, 4), (7, 2))...]. Это формирует кортежи из 4 кортежей. Но я хочу, чтобы внутренние кортежи были распакованы и состояли из 4-х элементов по 2, а не из кортежей.

1 Ответ

0 голосов
/ 09 ноября 2019

Вот один из способов сделать это:

[a + b for a, b in permutations(lis, 2)]
...