在字符串中重新排列字母顺序的最具Python风格的方法是什么?
我想取一个字符串,改变字符串中字母的顺序 我可以通过以下代码实现这一点:在字符串中重新排列字母顺序的最具Python风格的方法是什么?,python,python-3.x,string,slice,Python,Python 3.x,String,Slice,我想取一个字符串,改变字符串中字母的顺序 我可以通过以下代码实现这一点: s = 'Hello World!' s = s[6:] + s[5:6] + s[:5] s 这将产生输出: 'World! Hello' 这就是我想要实现的目标 但是,是否有可能以一种更具Python风格的方式编写字符串中元素的重新排列?例如,不必进行切片和添加,而是以某种方式指定重新格式化中的哪个切片“去哪里” 谢谢 稍后编辑: 具体地说,我想在字里行间的空白处实现这一点。例如: s = 'HelloWorld
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'
'orld!HelloW'
这也是我想要实现的,但是我是否可以用一种更具python风格的方式编写切片和添加行,例如,至少不需要显式地执行添加
注意:我希望能够使用元素的索引明确指定切片发生的位置,并切换两个切片的位置
所以它也可能是:
s = 'HelloWorld!'
s = s[6:] + s[:6]
s
这将产生以下输出:
'World!Hello'
'orld!HelloW'
谢谢 将字符串拆分为一个单词列表,反转该列表,然后将该列表连接回一个字符串
s = "hello world"
li = reversed(s.split())
res = ' '.join(li)
输出将是
world hello
或者我们可以在一行中完成所有这些
s = "hello world"
res = ' '.join(reversed(s.split()))
为了在没有空格的字符串中反转单词,我们还需要知道单词拆分的位置,我们需要一个列表。
e、 g对于helloworldthisme
,该列表将是[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])
@错误语法自责:嗯,
'.join(反向(s.split())
或'.join(s.split()[:-1])
;您不能使用.reverse()
,因为这是一个原地突变,返回None
。让我们来看看。