欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-31 23:26:58
...
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)
相关标签: python