[英]How to reverse string with stride via Python String slicing
我需要反轉一個交錯的字符串,意味着我有2對,應該像這樣搞砸了:
>>> interleaved = "123456"
倒車
>>> print interleaved[::-1]
654321
但我真正想要的是
563412
這有一個字符串切片操作?
對於偶數長度的字符串,這應該這樣做:
>>> s = "123456"
>>> it = reversed(s)
>>> ''.join(next(it) + x for x in it)
'563412'
對於奇數長度的字符串,您需要分別添加第一個字符:
>>> s = "7123456"
>>> it = reversed(s)
>>> (s[0] if len(s)%2 else '') + ''.join(next(it) + x for x in it)
'7563412'
使用切片和zip
:
>>> s = "7123456"
>>> (s[0] if len(s)%2 else '') + ''.join(x+y for x, y in zip(s[-2::-2], s[::-2]))
'7563412'
據我所知,最短的方法是使用正則表達式:
import re
''.join(re.findall('..?', '123456', flags=re.S)[::-1])
這也適用於奇數長度的字符串,而不必為它們實現單獨的邏輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.