Предположим, у меня есть следующая строка: '0000'
Я хочу создать набор строк, в которых изменяются только два числа (в данном случае от 0 до 1)
Для пример из строки '0000'
я получу результат: {'0011', '0101', '0110', '1001', '1010', '1100'}
Вот мой код:
def shift_two(string):
shift_2 = set()
for i in range(len(string)):
if i == len(string) - 1:
break
str_temp = list(string)
if str_temp[i] == '1':
str_temp[i] = '0'
else:
str_temp[i] = '1'
#copy a string, because list is mutable
for j in range(i+1,len(string)):
copy_str = str_temp.copy()
if copy_str[j] == '1':
copy_str[j] = '0'
shift_2.add(''.join(copy_str))
else:
copy_str[j] = '1'
shift_2.add(''.join(copy_str))
return shift_2
Но, возможно, есть более эффективные способы (и более читабельные) для завершения это задание?