这是我的琐碎Python代码:
from re import match
str = "Hello"
print str[::-1] # elloH
obj = match(r'(\w)(\w)(\w)(\w)(\w)', str)
for i in range(len(str)-1, -1, -1): # or reversed(range(len(str)))
print obj.groups()[i], # o l l e H
我在这段代码中有两个查询:
str[::-1]
中范围选项背后的逻辑是什么?因为str[len(str):-1:-1]
给出空输出,str[len(str):0:-1]
给出输出``olle`等等。r'(\w)(\w)(\w)(\w)(\w)'
如此紧凑? (即)删除重复或递归冗余(\w)
,如r'(\w)+'
? 答案 0 :(得分:1)
a)请检查以下代码:
>>> str = "Hello"
>>> str[:]
'Hello'
>>> str[::1]
'Hello'
>>> str[::2]
'Hlo'
>>> str[::3]
'Hl'
>>> str[::-1]
'olleH'
>>> str[::-2]
'olH'
>>> str[-1]
'o'
>>>
由此我们可以推断,[:: n]中的最后一个数字(n)表示从头开始跳转的步数。如果它是正数,它从位置0开始,如果它是负数,它从最后一个位置(-1)开始。
答案 1 :(得分:1)
import re
str = "Hello"
print str[::-1] # elloH
obj = re.findall(r"(\w)", str)
for i in range(len(str)-1, -1, -1): # or reversed(range(len(str)))
print obj.groups()[i]
这就是你要找的东西。
答案 2 :(得分:0)
word = "Hello"
rword = " ".join(reversed(word))
'o l l e H'