在Python中,我使用itertools.product()函数来生成模拟的输入参数。
我有一个测试函数需要4个输入参数a1、a2、b1和b2。我使用以下代码生成这些参数。例如:
我有一个测试函数需要4个输入参数a1、a2、b1和b2。我使用以下代码生成这些参数。例如:
params = itertools.product(range(10,41,2), range(10,41,2), range(0, 2), range(5, 31, 5))
……这给了我3072种组合。不幸的是,有些组合在逻辑上是毫无意义的。例如,如果a2大于a1,则测试结果是无用的;当b1等于0时,b2的值完全无关紧要——因此测试这样的组合没有任何意义。
除了手动嵌套for循环之外,是否有可能限制或过滤笛卡尔积?因为我的真实用例有超过4个参数,所以我喜欢itertools的笛卡尔积函数的便利性。
有什么想法或替代方案吗? 感谢任何帮助。
numpy
这样的数组包。 (例如,这不完全是您想要的,但可能相关:https://dev59.com/uoPba4cB1Zd3GeqPpTqO) - Lackitertools.product
没有筛选参数,因此您需要自己处理 - 要么编写类似于itertools.product
文档中示例的生成器,要么在生成后进行筛选。 - wwii