我想要一个函数,它会给我指定长度的所有可能的字符串,这些字符串只由零和一组成。例如:
spam(4)
应该让我:
['0110', '0111', '0001', '0011', '0010', '0101', '0100', '1110', '1100', '1101', '1010', '1011', '1001', '1000']
我试图itertools.permutations
用于这项工作。所以,这就是我所做的。
def getPerms(n):
perms = getCandidates(n)
res = []
for i in perms:
res.extend(permutations(i))
res = clean(res)
return res
def clean(ar):
res = []
for i in ar:
temp = ""
for j in i:
temp += j
res.append(temp)
return list(set(res))
def getCandidates(n):
res = []
for i in range(1, n):
res.append("1"*i + "0"*(n-i))
return res
但这是非常低效的,并且在 10 上会出现内存错误作为输入。