如何动态暴力生成任意数量参数的所有数值组合?
生成未知数量参数的所有数值组合
直接用Python标准库itertools里的product方法就能搞定,它专门用来生成多个可迭代对象的笛卡尔积,完美匹配你要的所有参数数值组合需求,不管参数数量多少都能处理。
完整代码示例
import itertools # n可以是任意整数,这里用4做示例 n = 4 possibleValues = range(1, n+1) # 参数列表长度不限,这里用2个做示例 parameters = ["foo", "boo"] # 生成所有数值组合的笛卡尔积 value_combinations = itertools.product(possibleValues, repeat=len(parameters)) # 把每个数值组合转换成对应的参数字典 result = [dict(zip(parameters, combo)) for combo in value_combinations] # 打印结果验证 for item in result: print(item)
代码说明
itertools.product(possibleValues, repeat=len(parameters)):通过repeat参数指定重复possibleValues的次数(次数等于参数列表的长度),生成所有参数的数值笛卡尔积,比如2个参数时会生成4×4=16种组合。dict(zip(parameters, combo)):将每个数值组合(比如(1,1))和参数列表一一配对,转换成你需要的字典格式。
输出结果(部分)
{'foo': 1, 'boo': 1} {'foo': 1, 'boo': 2} {'foo': 1, 'boo': 3} {'foo': 1, 'boo': 4} {'foo': 2, 'boo': 1} ... {'foo': 4, 'boo': 4}
内容的提问来源于stack exchange,提问作者Artur Nawrot
相关产品推荐
相关产品推荐

