我有三个列表,并且想调用一个函数,该函数需要3个参数以及该3个列表的值的所有可能组合。
如果满足条件,则打印组合的3个值。
最快和最好的方法是什么?
这是我的三个列表:
a = np.linspace(0.01,constants.pi/2,50)
b = np.arange(20,62,2)
c = np.arange(0.3,1.5,0.1)
我想调用一个函数,比如说在每次迭代中testAllCombination(a [i],b [j],c [k]),如果返回的值> 0,则打印3个值a [i ],b [j]和c [k]。是否可以通过简单的方式做到这一点?
答案 0 :(得分:0)
似乎您需要列表的笛卡尔积。
import itertools
list(itertools.product(a,b,c))
请注意,此操作会导致50*21*12=12600
中的a,b,c
项增加三倍。
答案 1 :(得分:0)
如果位置固定为(a,b,c)
,则可以考虑简单循环。否则,如果您需要更改为其他组合,例如(b,c,a), (c,b,a)...
,请使用itertools
a = np.linspace(0.01,3.14/2,50)
b = np.arange(20,62,2)
c = np.arange(0.3,1.5,0.1)
myCombination=[]
for i in a:
for j in b:
for k in c:
myCombination.append((i,j,k))
print(myCombination)
for item in myCombination:
testCondition(item)