Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在字符串中重新排列字母顺序的最具Python风格的方法是什么?_Python_Python 3.x_String_Slice - Fatal编程技术网

在字符串中重新排列字母顺序的最具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
。让我们来看看。