`

python实现字符串反转的多种方法

阅读更多
1、利用索引
s = 'hello'
print(s[::-1])

结果:'olleh'

b = a[i:j:s]说明:
i为起始索引(缺省为0),
j为结束索引(不包括,缺省为len(a)),
s为步进(缺省为1).
所以a[i:j:1]相当于a[i:j].

当s<0时:
i缺省时,默认为-1,
j缺省时,默认为-len(a)-1,
所以a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素复制一遍。
例如:
a=[1,2,3,4,5]
print(a[-1]) ###取最后一个元素,结果为[5]
print(a[:-1])### 除了最后一个取全部,结果为[ 1 2 3 4 ]
print(a[::-1])### 相当于a[-1:-6:-1],从后向前取
print(a[2::-1])### 相当于a[2:-6:-1],从后向前取,从索引为2的元素取到索引为-6的之前(即-5),结果为[3,2,1]
print(a[::-2])### 相当于a[-1:-6:-2],间隔2个步长取数,结果为[5,3,1]

2、利用列表的反转函数reverse
from functools import reverse
s = 'hello'
l = list(s)
l.reverse()
s1 = ''.join(l)
print(s1)

结果:'olleh'

3、使用reduce
s = 'hello'
new_s = reduce(lambda x,y:y+x,s)
print(new_s)


4、使用递归函数
s = 'hello'
def func(s):
    if len(s)<1:
        return s
    return func(s[1:])+s[0]
print(func(s))


5、使用栈
def func(s):
    l = list(s) #模拟全部入栈
    result = ""
    while len(l)>0:
        result += l.pop() #模拟出栈
    return result
result = func(s)


6、for循环
def func(s):
    result = ""
    max_index = len(s)-1
    for index,value in enumerate(s):
    ###for循环中enumerate用range取下标也可以:for index in range(0,len(s)):
        result += s[max_index-index]
    return result
result = func(s)
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics