Python 特定排列
我的程序有两个列表。这些是:Python 特定排列,python,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的组合,如果是,检查频率。但是我认为第二部分对我来说不是问题。看起来您正在尝试创建一个新列表,其中包含相同索引的q
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的组合,如果是,检查频率。但是我认为第二部分对我来说不是问题。看起来您正在尝试创建一个新列表,其中包含相同索引的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']]
像这样的
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,1值的限制使我想知道是否有更好的方法来解决根本问题。在我看来没问题,只是从
q
或p
中随机选取一个元素。根本问题是,我必须检查第三个列表是否可以是前两个的组合以及频率。然后程序会执行数百万次,所以应该很快。