Python实现字符串反转的方法
第一种:使用字符串切片
>>> 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' >>>