Комбинации из двух генераторов itertools - PullRequest
1 голос
/ 14 октября 2019

У меня есть два списка, из которых я генерирую генераторы itertools:

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']

import itertools

def all_combinations(any_list):
    return itertools.chain.from_iterable(
        itertools.combinations(any_list, i + 1)
        for i in range(len(any_list)))

combinationList1 = all_combinations(list1)
combinationList2 = itertools.combinations(list2, 2)

С помощью следующего кода я могу найти комбинации:

for j in combinationList1:
   print(j)

Теперь я хотел бысделать все возможные комбинации из combinationList1 и combinationList2, чтобы желаемый выход был бы: [1, a, b], [1, a, c], [1, b,c], ....., [1,2,3, a, b], [1,2,3, a, c], [1,2,3, b, c] .

Я не могу составить список из комбинаций itertools, поскольку реальные списки наборов данных намного больше. Кто-нибудь думает о том, как взять комбинацию из двух itertools?

1 Ответ

3 голосов
/ 14 октября 2019

Если вы хотите перебрать комбинацию, вы можете сделать product + chain :

for j in itertools.product(combinationList1, combinationList2):
    for e in itertools.chain.from_iterable(j):
        print(e, end=" ")
    print()

Output

1 a b 
1 a c 
1 b c 
2 a b 
2 a c 
2 b c 
3 a b 
3 a c 
3 b c 
1 2 a b 
1 2 a c 
1 2 b c 
1 3 a b 
1 3 a c 
1 3 b c 
2 3 a b 
2 3 a c 
2 3 b c 
1 2 3 a b 
1 2 3 a c 
1 2 3 b c 
...