Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用递归将函数应用于列表_Python - Fatal编程技术网

Python 如何使用递归将函数应用于列表

Python 如何使用递归将函数应用于列表,python,Python,如何使用递归将square(x)之类的函数应用于[1,2,3]之类的列表?我希望在不使用内置map函数的情况下获得结果[1,4,9]。 我写了这样的东西,但这会导致永远不会结束的错误。我如何才能改变这一点 lst=[1,2,3] def f(x): return x**2 def map(lst,f): i=0 if

如何使用递归将square(x)之类的函数应用于[1,2,3]之类的列表?我希望在不使用内置map函数的情况下获得结果[1,4,9]。 我写了这样的东西,但这会导致永远不会结束的错误。我如何才能改变这一点

lst=[1,2,3]

def f(x):                                                                          

    return x**2

def map(lst,f):

    i=0
    if i>len(lst):
        return 0
    else:
        lst[i]=f(lst[i])
        i+=1
        return map(lst,f)
这项工作:

def f(x):
    return x ** 2

def recursive_map(values, f):
    if not values:
        return []
    else:
        # Here we concatenate the f(head) + tail together:
        return [f(values[0])] + recursive_map(values[1:], f)

values = [1, 2, 3, 4, 5]
result = recursive_map(values, f)
print(result)
[1,4,9,16,25]


不确定这是否有助于您理解如何编写递归函数。请记住,您总是从“end”子句开始,在本例中,当输入为空时,返回空列表。

欢迎使用堆栈溢出!您似乎在要求某人为您编写一些代码。堆栈溢出是一个问答网站,而不是代码编写服务。请学习如何编写有效的问题。您不需要使用递归来实现
map
。大多数问题,如“我如何使用递归来做[事情]?”最终都会得到非常棘手的解决方案,因为递归不是一个一刀切的工具。它对于迭代树或表示递归关系非常有用,但对于替换for循环来说就不那么有用了。非常感谢!我也犯过类似的错误,但我也犯过其他错误。