k = reduce((lambda x,y,z : abs(x-y) + abs(y-z) + abs(z-x)) , range(List[0]))
给出了运行时错误。
错误消息: - ' TypeError :()缺少1个必需的位置参数: ž'
它的解决方案是什么?
答案 0 :(得分:0)
你的问题是(很可能,如果没有剩下的代码就很难判断......)你正在使用reduce(它将一个带有两个参数的函数作为它的第一个参数)并传递它是一个需要三个参数的函数。 reduce然后用两个参数调用你的匿名函数,这会导致异常。
作为旁注:我建议避免对变量使用大写名称(例如" List")。对于大多数python程序员来说,大写的名称意味着一个类。
答案 1 :(得分:0)
来自help(reduce)
reduce(...)
reduce(function, sequence[, initial]) -> value
Apply a function of two arguments cumulatively to the items of a sequence,
from left to right, so as to reduce the sequence to a single value.
For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates
((((1+2)+3)+4)+5). If initial is present, it is placed before the items
of the sequence in the calculation, and serves as a default when the
sequence is empty.
似乎reduce一次只传递2个参数并减少它们。