具体排列

时间:2015-08-20 15:48:47

标签: python

我的程序有两个列表。这些是:

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的组合,如果是,则是多久。但我认为第二部分对我来说不是问题。

2 个答案:

答案 0 :(得分: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')

答案 1 :(得分:0)

看起来您正在尝试使用相同索引的q元素或p元素创建新列表,我们这里是:

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']]