Обмен букв в строке из 2+ слов - PullRequest
0 голосов
/ 17 сентября 2018

Допустим, у меня есть строка из одного слова («Привет»), и я хотел поменять местами первую и последнюю буквы, чтобы я сделал это:

s="Hello"
l=list(s)
l[0],l[len(l)-1]=l[len(l)-1],l[0]
print("".join(l))

Но что, если япришлось поменять местами первую и последнюю букву в каждом слове строки: «Hello World», чтобы я получил «oellH dorlW».

Я думал об использовании вложенных списков, но это кажется слишком сложным.

Ответы [ 3 ]

0 голосов
/ 17 сентября 2018

Вы можете разбить свою строку, поменять буквы для каждого слова и .join () вернуть их вместе:

# example is wrong, does not swap, only puts first in the back. see below for fix
text = ' '.join( t[1:]+t[0] for t in "Hello World".split() )
print (text)

Вывод:

 elloH orldW

Это использует список, чтобы извлечь каждоеsplitted word (t) - срез списка, чтобы переместить переднюю букву назад (t[1:]+t[0]) и ' '.join(), чтобы сделать список строк обратно в строку.

Ссылки:

Также работает для более длинных строк:

elloH orldW si a eallyr verusedo trings ermt - orF ureS !

Как указал @Accumulation, я неправильно понял вопрос - мой пример просто помещает первую букву в конец строки, что только вдвое сокращает объем работы, выполненной для замены первой и последней букв:

# t[-1] is the last character put to the front, 
# followed by t[1:-1] 1st to (but not including) the last character 
# followed by t[0] the first character
text = ' '.join( t[-1]+t[1:-1]+t[0] for t in "Hello World".split() )
print (text)

Вывод:

oellH dorlW 
0 голосов
/ 17 сентября 2018
    string  = "Hello Planet Earth"

Составьте список слов, разделив их на пробел

    words = string.split(" ")

Затем выполните итерации по этому списку с помощью скрипта

    for word in words:
        l = list(word)
        l[0], l[len(l) - 1] = l[len(l) - 1], l[0]
        print("".join(l))
0 голосов
/ 17 сентября 2018

Строки являются неизменяемыми, поэтому вы можете создать новую, нарезав:

s = "Hello"
>>> s[-1] + s[1:-1] + s[0]
"oellH"

Чтобы сделать несколько слов, разделите и воссоединитесь следующим образом:

s= "Hello World"
>>> ' '.join(word[-1] + word[1:-1] + word[0] for word in s.split())
'oellH dorlW'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...