Python - 函数应该返回一个2D列表

时间:2016-04-09 20:58:17

标签: python

我给了一个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]

有没有更好的解决方案?

2 个答案:

答案 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]