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