Я хочу функцию, которая даст мне все возможные строки указанной длины, которые состоят только из нулей и единиц. Например:Создание списка бит длины n в Python
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 на входе.
Чтобы быть ясным - вы хотите, чтобы он содержал хотя бы один и по крайней мере один ноль? Потому что '0000' и' 1111' должны быть в вашем наборе иначе. – nneonneo
Да, мне нужны эти возможности. – Gerard