Как пройти все комбинации из 3 списков? - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть три списка, и я хочу вызвать функцию, которая принимает 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]) в каждой итерации, и если возвращаемое значение a> 0, выведите 3 значения a [i ], b [j] и c [k]. Можно ли сделать это простым способом?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

, если позиция зафиксирована на (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

0 голосов
/ 25 апреля 2019

Кажется, вам нужен декартово произведение ваших списков.

import itertools
list(itertools.product(a,b,c))

Обратите внимание, что эта операция приводит к 50*21*12=12600 тройкам элементов из a,b,c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...