我给了一个lambda函数和一个2D列表。必须使用reduce()
完成。让我们说:
func=lambda x,y:x+y
input=[[2,3],[4,5]]
# OUTPUT should be [[5],[9]]
我得到的只是:
arr=[]
arr.append(reduce (lambda x,y:x+y,[i for i in input[0]]))
arr.append(reduce (lambda x,y:x+y,[i for i in input[1]]))
return arr
# OUTPUT here is [5,9]
有没有更好的解决方案?
答案 0 :(得分:1)
[reduce(lambda x,y:x+y, item) for item in input]
答案 1 :(得分:0)
使用reduce
围绕[...]
的来电。
示例:arr.append([reduce(lambda x,y: x+y,input[0]]))
此外,在reduce
的调用中无需使用理解,正如我在上面的示例中所示。
最后,正如@Roman Kh所指出的,这可以全部压缩成一个语句:arr = [reduce(lambda x,y: x+y, item) for item in input]