python反向列表递归,仅使用

zkr*_*anc 2 python recursion function list

我只使用这些函数使用递归来反转列表时遇到问题:

def head(xs):
    return xs[0]

def tail(xs):
    return xs[1:]

def empty(xs):
    return len(xs) == 0
Run Code Online (Sandbox Code Playgroud)

我可以做这个:

def p(xs1, xs2):
    if not empty(tail(xs1)):
        p(tail(xs1), xs2)
    xs2.append(head(xs1))

def p05(xs):
    s = []
    p(xs, s)
    return s
Run Code Online (Sandbox Code Playgroud)

有没有办法不使用append()?

unu*_*tbu 5

def head(xs):
    return xs[0]

def tail(xs):
    return xs[1:]

def empty(xs):
    return len(xs) == 0

def reverse(xs):
    if empty(xs): return []
    return reverse(tail(xs))+[head(xs)]

xs = range(4)
print(reverse(xs))
Run Code Online (Sandbox Code Playgroud)

产量

[3, 2, 1, 0]
Run Code Online (Sandbox Code Playgroud)