Python “命名”为哪个对象;g";绑定到?
以下作业摘自 问题5。通过使用compose1作为第一个参数调用reduce,定义作业2中的重复函数。在下面的starter实现中仅添加一个表达式:Python “命名”为哪个对象;g";绑定到?,python,python-3.x,Python,Python 3.x,以下作业摘自 问题5。通过使用compose1作为第一个参数调用reduce,定义作业2中的重复函数。在下面的starter实现中仅添加一个表达式: 为了完成这项任务,我想了解g绑定到什么f绑定到square函数首先,重复(f,4)返回什么 一种函数,在对任意arg调用时,将返回f(f(f(f(arg))) 因此,如果您想用compose1构建它,您需要返回compose1(compose1(f,f),f)或compose1(f,compose1(f,f)) 现在,看看是什么做的,并弄清楚它每次
为了完成这项任务,我想了解
g
绑定到什么f
绑定到square
函数首先,重复(f,4)
返回什么
一种函数,在对任意arg
调用时,将返回f(f(f(f(arg)))
因此,如果您想用compose1
构建它,您需要返回compose1(compose1(f,f),f)
或compose1(f,compose1(f,f))
现在,看看是什么做的,并弄清楚它每次都将传递给compose1
。显然,您的iterable
参数必须以f
本身开始或结束。但是,为了确保获得两个可接受的结果中的一个,您还需要什么呢
同时,在对
compose1
的每个调用中,除了最后一个,两个参数中的一个必须是重复的函数的f
,而另一个参数将是对compose1
的另一个调用的结果。(最后一次,当然,它们都是f
)找出其中哪一个是f
,哪一个是g
,以及如何使reduce
为每一个传递正确的值,你就解决了问题。你知道怎么做吗?这里有一个提示:如果您想要返回一个函数,该函数不执行f(f(…f(arg);))
,那么它将是compose(f,compose(f,compose(f,…(f)))
。这是否告诉了您g
将是什么?g可以是任何内置pythonfunction@sachinsaxena:那么?这是真的,但在OP的情况下,它永远不会是一个内置函数…为什么这个问题是-1?我猜是有人没有仔细阅读,以为你只是要求他们为你解决作业(这应该得到否决票),而不是帮助您理解每个compose1
调用的g
参数是什么,这样您就可以自己解决分配问题(我认为这不值得否决)。在这样的问题上,这总是一个风险。我不知道如何仔细地写东西,以便没有人从快速扫描中得到错误的印象,但如果你关心选票,那就是你必须弄清楚的。return reduce(compose1,[f代表I在范围(n)])
@overexchange:是的,这就是你的作业的答案。所以我假设你也知道你的问题的答案,每个compose1
调用中g
是什么?每次调用compose1时,g是f
def square(x):
return x*x
def compose1(f, g):
"""Return a function of x that computes f(g(x))."""
return lambda x: f(g(x))
from functools import reduce
def repeated(f, n):
"""Return the function that computes the nth application of f, for n>=1.
f -- a function that takes one argument
n -- a positive integer
>>> repeated(square, 2)(5)
625
>>> repeated(square, 4)(5)
152587890625
"""
assert type(n) == int and n > 0, "Bad n"
return reduce(compose1, "*** YOUR CODE HERE ***" )