Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 特定排列_Python - Fatal编程技术网

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
中随机选取一个元素。根本问题是,我必须检查第三个列表是否可以是前两个的组合以及频率。然后程序会执行数百万次,所以应该很快。