第一种:使用字符串切片
>>> s = "python"
>>> s[::-1]
'nohtyp'
>>>
第二种:使用列表的reverse方法
>>> s = "python"
>>> lst = list(s)
>>> lst.reverse()
>>> "".join(lst)
'nohtyp'
>>>
手写 reverse
>>> def reverseString(s:str) -> str:
lst = list(s)
i, j = 0, len(s)-1
while i < j:
lst[i], lst[j] = lst[j], lst[i]
i , j = i + 1, j - 1
return "".join(lst)
>>> s = 'python'
>>> reverseString(s)
'nohtyp'
>>>
第三种:使用reduce
>>> from functools import reduce # Python3 中不可以直接调用reduce
>>> s = "python"
>>> reduce(lambda x, y: y+x, s)
'nohtyp'
>>>
reduce 函数帮助:
>>> help(reduce)
Help on built-in function reduce in module _functools:
reduce(...)
reduce(function, sequence[, initial]) -> value
Apply a function of two arguments cumulatively to the items of a sequence,
from left to right, so as to reduce the sequence to a single value.
For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates
((((1+2)+3)+4)+5). If initial is present, it is placed before the items
of the sequence in the calculation, and serves as a default when the
sequence is empty.
>>>
第四种:使用递归函数
>>> def reverse(s):
if s == "":
return s
else:
return reverse(s[1:]) + s[0]
>>> reverse('python')
'nohtyp'
>>>
python中默认的最大递归数:
>>> import sys
>>> sys.getrecursionlimit()
1000
>>>
第五种:使用栈
>>> def rev(s):
lst = list(s) # 转换成list
ret = ""
while len(lst):
ret += lst.pop() # 每次弹出最后的元素
return ret
>>> s = 'python'
>>> rev(s)
'nohtyp'
>>>
第六种:for循环
>>> def rever(s):
ret = ""
for i in range(len(s)-1, 0, -1):
ret += s[i]
return ret
>>> s = "python"
>>> rev(s)
'nohtyp'
>>>