0과 1로만 구성된 지정된 길이의 가능한 모든 문자열을 제공하는 함수가 필요합니다. 예를 들어 :파이썬에서 길이 비트리스트 생성
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의 메모리 오류를 발생시킵니다.
명확하게하려면 적어도 하나 이상 0을 포함하고 싶습니까? 왜냐하면'0000'과'1111'이 당신의 세트에 있어야하기 때문입니다. – nneonneo
예, 그 가능성이 필요합니다. – Gerard