假设我有一个单字字符串(“ Hello”),我想交换第一个和最后一个字母,所以我会这样做:
s="Hello"
l=list(s)
l[0],l[len(l)-1]=l[len(l)-1],l[0]
print("".join(l))
但是,如果我不得不在字符串的每个单词中交换第一个和最后一个字母:“ Hello World”,那么我会得到“ oellH dorlW”怎么办?
我当时在考虑使用嵌套列表,但似乎过于复杂了。
答案 0 :(得分:3)
字符串是不可变的,因此您可以通过切片来创建一个新字符串:
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'
答案 1 :(得分:2)
您可以分割字符串,将每个单词交换字母,然后将.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
这使用列表理解来提取每个分割的单词(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
答案 2 :(得分:1)
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))