如何遍历3个列表的所有组合?

时间:2019-04-25 18:36:27

标签: python arrays list

我有三个列表,并且想调用一个函数,该函数需要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]。是否可以通过简单的方式做到这一点?

2 个答案:

答案 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)

https://docs.python.org/2/library/itertools.html