2016-12-06 62 views
0

當壓扁的循環,你會做這樣的事情:精梳for循環

for a, b, c in itertools.product(x1, x2, x3): 
    ... 

但是,你會如何處理的情況下的要素之一是使用作爲參數來檢索列表也被遍歷?例如:

for a, b in itertools.product(x1, get_b_elements(a)): 
    ... 

這甚至有可能嗎?

+1

所以,你不知道它列出你得到的,直到你已經得到了他們的產品的產品?要麼你有一個不可能的任務,要麼你需要澄清你想要做的事情。 – TigerhawkT3

+0

到目前爲止,你只能變平。在這裏你已經達到了你必須停下來的地步。 –

回答

0
for a in x1: 
    for b in get_b_elements(a): 
     #do something with (a, b) 

只是列出一種替代方案:

for (a, b) in [(a_i, b_i) for a_i in x1 for b_i in get_b_elements(a_i)]: 
    #do something with (a, b) 

由於@wim筆記,沒有這些 「扁平化」 的循環,只要你想。

+0

這很好,可讀,但它並沒有使循環變平,我認爲這是問題所在。 – wim

-1

試試這個:

alphabets = [a,b,c,d] 
xs = [x1,x2,x3] 

itertools.product(alphabets, xs)