我对Python比较陌生,而且遇到麻烦
用折叠或更具体地说,reduce()
的'初始化'参数
e.g。 reduce(function, iterable[, initializer])
这是函数......
>>> def x100y(x,y):
... return x*100+y
有人可以解释为什么reduce()会产生44 ......
>>> reduce(x100y, (), 44)
44
或者为什么它在这里产生30102 ......
>>> reduce(x100y, [1,2], 3)
30102
答案 0 :(得分:3)
来自文档:
reduce(function, iterable[, initializer])
应用两个功能 参数累加到可迭代的项目,从左到右, 以便将迭代减少到单个值。例如,
reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])
计算((((1+2)+3)+4)+5)
。左参数x是累计值和 正确的参数y是迭代的更新值。如果 可选的初始化程序存在,它放在项目之前 在计算中可迭代,并在迭代时用作默认值 是空的。如果没有给出初始化器,并且iterable只包含一个 item,返回第一个项目。
初始值设定项在您的iterable中作为元素0放置,如果您的iterable中没有元素,则返回它。 (所以这就是你得到44的原因)
此外,x100y不是有效的python函数。如果你想把它变成一个有效的python函数,你就必须这样做
reduce(lambda x,y: x*100*y,[1,2],3)
相当于
(3 * 100 * 1)* 100 * 2应该给60000(为什么你得到的价值可能是因为错误)
有关lambda的文档是here