Python如何从列表中获取笛卡尔积

1、可以使用itertools.product在标准库中使用以获取笛卡尔积。

fromitertoolsimportproduct

somelists=[
[1,2,3],
['a','b'],
[4,5]
]

result=list(product(*somelists))
print(result)

2、迭代方法。

defcartesian_iterative(pools):
result=[[]]
forpoolinpools:
result=[x+[y]forxinresultforyinpool]
returnresult

3、递归方法。

defcartesian_recursive(pools):
iflen(pools)>2:
pools[0]=product(pools[0],pools[1])
delpools[1]
returncartesian_recursive(pools)
else:
pools[0]=product(pools[0],pools[1])
delpools[1]
returnpools
defproduct(x,y):
return[xx+[yy]ifisinstance(xx,list)else[xx]+[yy]forxxinxforyyiny]

4、Lambda方法。

defcartesian_reduct(pools):
returnreduce(lambdax,y:product(x,y),pools)

以上就是Python从列表中获取笛卡尔积的方法,希望对大家有所帮助。更多Python学习指路:Python基础教程