Python 各子列表中单个元素的组合

Python 各子列表中单个元素的组合,python,list,recursion,sublist,Python,List,Recursion,Sublist,如果我有列表my_list=[['a',b'],['c',d',e'],如何创建所有可能元组的列表,其中每个元组包含每个子列表中的单个元素?例如: “a”、“e”是有效的 “a”、“b”无效 “b”、“c”是有效的 “c”、“d”无效 重要的是,我的_列表可以包含任意数量的元素子列表,并且每个子列表可以是任意长度的 我想尝试使用递归而不是itertools 逻辑是一次迭代2个子列表,并将这些结果作为输入存储到下一个子列表的扩展中 def foil(lis=l): if len(lis)

如果我有列表my_list=[['a',b'],['c',d',e'],如何创建所有可能元组的列表,其中每个元组包含每个子列表中的单个元素?例如:

“a”、“e”是有效的 “a”、“b”无效 “b”、“c”是有效的 “c”、“d”无效

重要的是,我的_列表可以包含任意数量的元素子列表,并且每个子列表可以是任意长度的

我想尝试使用递归而不是itertools

逻辑是一次迭代2个子列表,并将这些结果作为输入存储到下一个子列表的扩展中

def foil(lis=l):
    if len(lis) == 2:
        for x in l[0]:
            for y in l[1]:
                yield x + y
    else:
        for p in foil(l[:-1]):
            yield p


for i in foil():
    print(i)
但是,这显然只适用于lenmy_list==2。它还需要与my_list=[['a']、['b']、['c',d']]一起使用,它们将返回:

“a”、“b”、“c” “a”、“b”、“d”

干杯!

使用itertools.product:


itertools productUpdates,我起初很含糊
import itertools

my_list = [['a', 'b'], ['c', 'd', 'e']]
print(list(itertools.product(*my_list)))
# [('a', 'c'), ('a', 'd'), ('a', 'e'), ('b', 'c'), ('b', 'd'), ('b', 'e')]

my_list = [['a'], ['b'], ['c', 'd']]
print(list(itertools.product(*my_list)))
#[('a', 'b', 'c'), ('a', 'b', 'd')]