[英]What is the most pythonic way to re-order letters in a string?
我想要一个字符串并更改字符串中字母的顺序。
我可以通过以下代码来实现:
s = 'Hello World!'
s = s[6:] + s[5:6] + s[:5]
s
这将产生输出:
'World! Hello'
这是我想要实现的。
但是,是否可以用更Python化的方式编写字符串中元素的重排? 例如,无需切片和添加,而是以某种方式指定哪些切片“重新定位”到哪里。
谢谢!
以后编辑:
具体来说,我想在单词之间没有空格的情况下实现此目的。 例如:
s = 'HelloWorld!'
s = s[5:] + s[:5]
s
产生输出:
'World!Hello'
这又是我想要实现的目标,但是例如,我是否仍可以以更pythonic的方式编写切片和添加行,而无需至少显式执行添加操作?
注意:我希望能够使用元素的索引来明确指定切片将在哪里发生,并切换两个切片的位置。
因此也可能是:
s = 'HelloWorld!'
s = s[6:] + s[:6]
s
产生输出:
'orld!HelloW'
谢谢!
将字符串拆分为单词列表,逆向列表,然后将列表重新连接到字符串
s = "hello world"
li = reversed(s.split())
res = ' '.join(li)
输出将是
world hello
或者我们可以在一行中完成所有这些操作
s = "hello world"
res = ' '.join(reversed(s.split()))
为了使字符串中没有空格的单词反向,我们还需要知道单词在何处被拆分,为此我们需要一个列表。 例如对于HelloWorldThisIsMe
,该列表将为[0,5,10,14,16,18]
因此,新代码将根据索引对单词进行拆分,将列表反向并将列表与字符串重新连接在一起
def reorder(indexes, s):
res = [s[indexes[idx]:indexes[idx+1]] for idx in range(len(indexes)-1)]
return ''.join(reversed(res))
print(reorder([0,5,10,14,16,18],'HelloWorldThisIsMe'))
#MeIsThisWorldHello
print(reorder([0,5,11],'HelloWorld!'))
#World!Hello
我们还可以通过这种方式获得相同的结果:
s = "Hello World!"
rev = ' '.join(s.split(' ')[-1::-1])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.