Я пытаюсь понять, как создать функцию, которая принимает два списка, а затем возвращает список всех возможных комбинаций этих списков, созданных путем выбора одного элемента из одного из списков для каждого индекса. Не думаю, что я хорошо это описываю, но я ищу:
input: ['a', 'b'], ['c', 'd']
вывод: ['ab', 'ad', 'cb', 'cd']
Я сделал функцию, которая делает это полууспешно здесь:
def mix_list(lst1, lst2):
res = []
k = max(len(lst1), len(lst2))
ref = itertools.product(range(2), repeat=k)
for comb in list(ref):
temp = [None] * k
for i, e in enumerate(comb):
if e == 0:
try:
temp[i] = lst1[i]
except IndexError:
temp[i] = lst2[i]
elif e == 1:
try:
temp[i] = lst2[i]
except IndexError:
temp[i] = lst1[i]
res.append(temp)
return [''.join(i) for i in set(map(tuple, res))]
Моей первой мыслью было, что у itertools будет какая-то функция, которая sh это выполнит, но я ничего не нашел. Кроме того, я немного погуглил и искал здесь, но мне не удалось найти что-то, что делает то, что я ищу, немного быстрее или проще.
Есть ли лучший способ сделать это sh или, может быть, библиотека, в которой есть функция, которая уже делает это?