对于通常的函数,您可以如下注释类型
def my_function(arg1: int)
我该如何在lambda中完成这个操作?
lambda a: int, b: int : a+b
出现语法错误。
对于通常的函数,您可以如下注释类型
def my_function(arg1: int)
我该如何在lambda中完成这个操作?
lambda a: int, b: int : a+b
出现语法错误。
供参考:https://dev59.com/XVsX5IYBdhLWcg3wau8r#33833896lambda的语法不支持注释。可以通过在参数列表周围要求括号来更改lambda的语法以支持注释。然而,决定不进行此更改,因为:
它将是一个不兼容的更改。 Lambda已经被削弱了。 Lambda始终可以更改为函数。
lambda a, b : a[0] + b[0]
在这里,a
是先前迭代的结果,b
是当前元素。
现在,让我们看看你的程序:
functools.reduce(lambda a, b : a[0] + b[0], [[0,1], [2,3]])
iter #1: a = [0,1], b = [2,3], so, a[0] + b[0] = 0 + 2 =3
它能够工作。
但是,当你这样做:
functools.reduce(lambda a, b : a[0] + b[0], [[0,1], [2,3], [4,5]])
iter #1: a = [0,1], b = [2,3], so, a[0] + b[0] = 0 + 2 =3
iter #2: a = 3, b = [4,5], so, a[0] + b[0] = Error, as you can't subscript an integer `3` (3[0] > Error).
>>> a = 1
>>> a[0]
a = [[0,1], [2,3], [4,5]]
print sum(map(lambda x:x[0],a))
print sum(i[0] for i in a)
reduce
会计算。result1 = func(x1, x2)
result2 = func(result1, x3)
...