Как получить комбинацию элементов по списку списков по 2 элемента на Python

Рейтинг: 0Ответов: 1Опубликовано: 13.04.2023

Подскажите, пожалуйста, как можно получить комбинацию элементов такого списка по 2 элементам из каждого подсписка. Дано:

from itertools import product

list1 = [[['a1', 66],['a2', 58],['a3', 56]],
         [['b1', 66],['b2', 49],['b3', 51],['b4', 58]],
         [['c1', 66],['c2', 53],['c3', 50]],
         [['x1', 66],['x2', 53],['x3', 50]]     
       ]

Чтобы получить из каждого подсписка все комбинации состоящие из одного элемента из каждого подсписка я делаю вот так:

list_product = list(product(*list1))
print(list_product)
>>>[(['a1', 66], ['b1', 66], ['c1', 66], ['x1', 66]),
    (['a1', 66], ['b1', 66], ['c1', 66], ['x2', 53]),
    (['a1', 66], ['b1', 66], ['c1', 66], ['x3', 50]),
    (['a1', 66], ['b1', 66], ['c2', 53], ['x1', 66]),
     .....
     (['a3', 56], ['b4', 58], ['c3', 50], ['x3', 50])]

Но мне нужно чтобы из каждого подсписка бралось по 2 элемента, чтобы в итоге было вот так:

print(list_product)
>>>[(['a1', 66], ['a2', 58], ['b1', 66], ['b2', 49], ['c1', 66], ['c2', 53], ['х1', 66], ['х2', 53]),
    (['a1', 66], ['a2', 58], ['b1', 66], ['b2', 49], ['c1', 66], ['c2', 53], ['х1', 66], ['х3', 50]),
   ....
    (['a2', 58], ['a3', 56], ['b3', 51], ['b4', 58], ['c2', 53], ['c3', 50], ['х2', 53], ['х3', 50])]

Ответы

▲ 4Принят
from itertools import product, combinations

list1 = [[['a1', 66],['a2', 58],['a3', 56]],
         [['b1', 66],['b2', 49],['b3', 51]],
         [['c1', 66],['c2', 53],['c3', 50]],
         [['x1', 66],['x2', 53],['x3', 50]]     
       ]
list_product = list(product(*[combinations(x,2) for x in list1]))
print(list_product)

Решение не полное. Сам не проверял. Просто пример того, в какую сторону нужно копать