我的程序有两个列表。这些是:
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的组合,如果是,则是多久。但我认为第二部分对我来说不是问题。
答案 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']]