在Python中,我使用itertools.product()函数为模拟生成输入参数.
我有一个测试功能,需要4个输入参数a1,a2,b1和b2.我使用下面的代码生成参数.例:
params = itertools.product(range(10,41,2), range(10,41,2), range(0, 2), range(5, 31, 5))
Run Code Online (Sandbox Code Playgroud)
......这给了我3072个组合.不幸的是,某些组合在逻辑上毫无意义.E. g.如果a2大于a1,则测试结果是无用的,当b1等于0时,b2的值完全无关 - 所以测试这样的组合是没有意义的.
是否有可能限制或过滤笛卡尔积,只需手动执行并嵌套for循环?因为我的真实用例有超过4个参数,这就是为什么我喜欢itertools中笛卡尔积函数的便利性.
任何想法或替代品?任何帮助表示感谢,谢谢.
我正在寻找内联工作的list.extend()方法的替代方法.
代替
x = range(15,30,3)
x.extend([0])
print (x)
>>> [15, 18, 21, 24, 27, 0]
Run Code Online (Sandbox Code Playgroud)
我需要一个内联工作的等效项,比如
print range(15,30,3).extend([0])
>>> None
Run Code Online (Sandbox Code Playgroud)
但是extend不会返回列表本身.
是否有任何花哨的开箱即用的命令来实现同样的目标?