Как объединить два списка в список кортежей с помощью рекурсии? - PullRequest
0 голосов
/ 04 марта 2020

Я знаю, что это не нужно делать рекурсией. Я хочу объединить два списка, таких как x = [0, 1] и y = ['a', 'b', 'c'], и создать функцию, которая помещает их в список кортежей, таких как: [(0, 'a'), (0, 'b'), (0, 'c'), (1, 'a'), (1, 'b'), (1, 'c')].

. Я знаю только, как это сделать для первого Индекс списка х и пытается выяснить, как перейти к дальнейшим индексам. Вывод для функции ниже: [(0, 'a'), (0, 'b'), (0, 'c')].

def combine(x, y, idx=0):
    if idx < len(y):
        return [(x[idx], y[idx])] + combine(x, y[1:])
    else:
        return []

Я не знаю, как получить список х, чтобы перейти к другим индексам. Я думаю, что мне может потребоваться вызвать all_pairs (list1, list2, index + 1 вместо того, чтобы разрезать список. Нужно ли мне дважды вызывать саму функцию? Это может показаться элементарным, но по какой-то причине я не могу понять это.

1 Ответ

0 голосов
/ 04 марта 2020

Вы можете сделать, как показано ниже

from itertools import product
a = list(product(x,y))
a

или просто составить список, как показано ниже

[(a,b) for a in x for b in y]

Выход

[(0, 'a'), (0, 'b'), (0, 'c'), (1, 'a'), (1, 'b'), (1, 'c')]
...