如何通过Python字符串切片反向旋转字符串

Max*_*ner 4 python string slice

我需要反转一个交错的字符串,意味着我有2对,应该像这样搞砸了:

>>> interleaved = "123456"
Run Code Online (Sandbox Code Playgroud)

倒车

>>> print interleaved[::-1]
654321
Run Code Online (Sandbox Code Playgroud)

但我真正想要的是

563412
Run Code Online (Sandbox Code Playgroud)

这有一个字符串切片操作?

Ash*_*ary 7

对于偶数长度的字符串,这应该这样做:

>>> s = "123456"
>>> it = reversed(s)
>>> ''.join(next(it) + x for x in it)
'563412'
Run Code Online (Sandbox Code Playgroud)

对于奇数长度的字符串,您需要分别添加第一个字符:

>>> s = "7123456"
>>> it = reversed(s)
>>> (s[0] if len(s)%2 else '') + ''.join(next(it) + x for x in it)
'7563412'
Run Code Online (Sandbox Code Playgroud)

使用切片和zip:

>>> s = "7123456"
>>> (s[0] if len(s)%2 else '') + ''.join(x+y for x, y in zip(s[-2::-2], s[::-2]))
'7563412'
Run Code Online (Sandbox Code Playgroud)