Способ получить все комбинации из нескольких строк (Python)

#python #list

#python #Список

Вопрос:

Скажем, я вставил:

 ["abc", "def"]
 

это дало бы мне:

 ["ad","ae","af","bd","be","bf","cd","ce","cf"]
 

Код, который я использовал:

 combs = [""]
conv = {"2":"abc","3":"def","4":"ghi","5":"jkl","6":"mno","7":"qprs","8":"tuv","9":"vxyz"}
for digit in "23":
    for comb in combs:
        for loop in range(len(conv.get(digit))):
            combs.append(digit)
 

Но этот код создает бесконечный цикл

Комментарии:

1. Взгляните на itertools.product

2. предоставьте свой код для проверки

3. @Barmer Да, в решении, опубликованном Burning Alcohol, использовался itertools.product, я не знал, что у itertools есть функция для решения такой проблемы

4. @sourab maity Я отредактировал в своем коде

Ответ №1:

 import itertools
a = ["abc", "def", "hk"]
b = ["".join(s) for s in itertools.product(*a)]
print(b)
 

вывод: ['adh', 'adk', 'aeh', 'aek', 'afh', 'afk', 'bdh', 'bdk', 'beh', 'bek', 'bfh', 'bfk', 'cdh', 'cdk', 'ceh', 'cek', 'cfh', 'cfk']

Ответ №2:

 from itertools import product
a = product('abc','def')
print(list(a))
 

Комментарии:

1. это выведет список кортежей