使用 + 运算符可以正常工作。如果我尝试使用 append 方法进行编写,它会返回 None。
revFromEnd2 能否使用append 方法反转列表?
def revFromEnd(L):
if len(L)==1:
return L
else:
return [L[-1]] + revFromEnd(L[:-1])
def revFromEnd2(L):
if len(L)==1:
return L
else:
return [L[-1]].append(revFromEnd2(L[:-1]))
print(revFromEnd([1,2,3,4,5]))
print()
print(revFromEnd2([1,2,3,4,5]))
请您参考如下方法:
有一个内置函数reversed:
>>> l = [1, 2, 3]
>>> list(reversed(l))
[3, 2, 1]
你也可以使用切片(它们的语法是 [start:end:step],所以如果你为 step 定义一个负值,它会在相反的方向生成一个切片):
>>> l = [1, 2, 3]
>>> l[::-1]
[3, 2, 1]
UPD:是的,递归很棒,但由于您使用的是 Python 和 it doesn't optimize tail recursion , 最好使用更明显的方法:)
