python实现字符串反转的多种方法
程序员文章站
2022-05-31 23:34:54
...
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
结果:'olleh'
3、使用reduce
4、使用递归函数
5、使用栈
6、for循环
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)