第一種:使用字符串切片
>>> 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' >>>
