python中没有重复的数组元素的有效排列

时间:2018-09-12 09:01:40

标签: python arrays permutation

我想生成仅包含1和0且无重复的数组中所有排列的列表。我已经使用了代码

import itertools 
import numpy as np 
L = 3
M = 2

list1=list(itertools.product([0,1],repeat=L+M-1))
list1_filtered=np.asarray(list(filter(lambda x: sum(x)==M,list1)))
print(list1_filtered)

输出为

[[0 0 1 1]
 [0 1 0 1]
 [0 1 1 0]
 [1 0 0 1]
 [1 0 1 0]
 [1 1 0 0]]

是否有任何方法可以使生成速度更快(即不使用过滤操作仅选择总和等于M的数组)?

是否可以创建一个从[0,0,1,1]开始递归给出所有其他行的迭代函数f?即

f([0,0,1,1]) = [0,1,0,1], 
f([0,1,0,1]) = [0,1,1,0],
....

0 个答案:

没有答案