2015-08-20 40 views
-3

我的程序正在獲取兩個列表。它們是:特定排列

p=[x1,x2,x3] 
q=[y1,y2,y3] 

(可能的條目只是0和1)那麼就應該給我以下列表:

[x1,x2,y3] 
[x1,y2,x3] 
[y1,x2,x3] 
[y1,y2,x3] 
[y1,x2,y3] 
[x1,y2,y3] 

所以條目不能更改列表的位置。這就是爲什麼簡單的排列不適合我。之後,程序應該檢查,如果列表t=[c1,c2,c3]是p和q的組合,並且如果是多久。但我認爲第二部分對我來說不是問題。

+1

很難猜測如何將這些 '置換' 應生成。應該有一個規則,不僅僅是一個例子。 – ForceBru

+1

你究竟想要解決什麼?對0,1值的限制讓我懷疑是否有更好的方法來解決潛在的問題。 – shuttle87

+0

對我來說看起來不錯,只是從'q'或'p'中隨機選取一個元素。 –

回答

1

類似的東西?

from itertools import product 

p=['x1','x2','x3'] 
q=['y1','y2','y3'] 

for t in product(*zip(p,q)): 
    print(t) 

輸出:

('x1', 'x2', 'x3') 
('x1', 'x2', 'y3') 
('x1', 'y2', 'x3') 
('x1', 'y2', 'y3') 
('y1', 'x2', 'x3') 
('y1', 'x2', 'y3') 
('y1', 'y2', 'x3') 
('y1', 'y2', 'y3') 
0

看起來你是從qp試圖建立一個新的列表,無論是元素,同樣的指數,在這裏我們去:

In [94]: 

import itertools 
import numpy as np 
[list(np.where(item, p, q)) for item in itertools.product(*[[0,1],]*3)] 
Out[94]: 
[['y1', 'y2', 'y3'], 
['y1', 'y2', 'x3'], 
['y1', 'x2', 'y3'], 
['y1', 'x2', 'x3'], 
['x1', 'y2', 'y3'], 
['x1', 'y2', 'x3'], 
['x1', 'x2', 'y3'], 
['x1', 'x2', 'x3']]