Как я могу поменять 1 букву и дать все возможные буквы в Python - PullRequest
0 голосов
/ 04 ноября 2019

Как мне поменять местами только «одну» букву и выдать все возможные выходные данные в python3 и добавить в список

, например: при слове «изучение» у нас будут все возможные выходные данные, например

swap the s:
tsudy, tusdy, tudsy, tudys, 
#swap the t:
tsudy, sutdy, sudty, sudyt
#also with u,d,y:
...

1 Ответ

0 голосов
/ 04 ноября 2019

Вы можете преобразовать слово в список символов,

chars = list(word)

удалить выбранный символ из списка, используя его позицию

chars.pop(index)

, а затем добавить этот символ в разные места в этом списке

new_chars = chars[:pos] + [char] + chars[pos:]

Код:

word = 'study'

for index, char in enumerate(word):
    print('char:', char)
    # create list without selected char
    chars = list(word)
    chars.pop(index)

    # put selected char in different places
    for pos in range(len(chars)+1):
        # create new list 
        new_chars = chars[:pos] + [char] + chars[pos:]
        new_word = ''.join(new_chars)

        # skip original word
        if new_word != word:
            print(pos, '>', new_word)

Результат:

char: s
1 > tsudy
2 > tusdy
3 > tudsy
4 > tudys
char: t
0 > tsudy
2 > sutdy
3 > sudty
4 > sudyt
char: u
0 > ustdy
1 > sutdy
3 > stduy
4 > stdyu
char: d
0 > dstuy
1 > sdtuy
2 > stduy
4 > stuyd
char: y
0 > ystud
1 > sytud
2 > styud
3 > stuyd

Кстати: Я бы не назвал это"swapping" но "moving" char. В «обмене» я бы предпочел заменить два символа - т.е. замена a на c в abcd дает cbad, а не bcad (как в «перемещении»)

...