我有3个变量,带有一些可能的值.
例如:
Var1 - possible values: 1,2,3
Var2 - possible values: a, b, c
var3 - possible values: false, true
你能帮助我找到一种可以返回所有可能组合的方法吗?
结果如下:
1,a,false
1,a,true,
1,b,false
1,b,true,
1,c,false
1,c,true
2,a,false
2,a,true
2,b,false
Etc..
我希望该算法可以应用于任何级别的组合,例如,算法可以处理4或5个具有其他可能值的变量.
最佳答案 看起来你正在尝试枚举
Cartesian products.假设你的项目在list_of_lists中,伪代码中的这个递归函数将执行:
enumerate_cartesian_prducts(list_of_lists):
if list_of_lists is empty:
return [[]]
this_list = list_of_lists[0]
other_lists = list_of_lists[1: ]
other_cartesian_products = []
return [(e + other_cartesian_product) \
for e in this_list and other_cartesian_product in other_cartesian_products]
注意在大多数语言中最后一行可能是一个双循环:它迭代第一个列表中的所有元素,其余部分的笛卡尔积中的所有列表,并创建所有附加结果的列表.