Пример. Есть chars ('+','-') и N=10, нужно получить chars**N, то есть список длины 2**N всех строк длины N из указнанных символов. (Строки и списки символов можно не различать)
Пока знаю только громозкий способ через рекурсивную функцию:
def gen_list_pow(chars, N): ans=[] line=chars[0]*N ans.append(line) rcrs(line, ans, chars) return ans def rcrs(line, ans, chars): for p in range(len(line)): if line[p]==chars[0]: newline=line[:p]+chars[1]+line[p+1:] if newline in ans: continue ans.append(newline) rcrs(newline, ans, chars) print(gen_list_pow('+-',3)) # ['+++', '-++', '--+', '---', '-+-', '+-+', '+--', '++-']