Python - reduce,二维数组

时间:2016-04-08 20:40:30

标签: python

我试图在包含坐标的二维数组上使用 reduce 。我没有很多 reduce 的经验我有一个名为 func 的函数,我必须将此函数应用于数组的每个元素。例如:

func=lambda x:x-1
array=[[5,9],[10,3]]
reduce (lambda x,y: ...,array)
OUTPUT should be -> [[4,8],[9,2]]

我只是将每个元素递减1。感谢。

2 个答案:

答案 0 :(得分:3)

reduce采用两个参数的函数并将其累积地应用于序列的元素 - 但是你想要做的就是从每个子列表的每个元素中减去一个,所以我不确定你为什么会这样做想在这里使用reduce

我建议这个列表理解:

>>> lst = [[5,9],[10,3]]
>>> [[x-1 for x in sub] for sub in lst]
[[4, 8], [9, 2]]

或者如果你想使用你的lambda函数:

>>> [map(lambda x: x-1, sub) for sub in lst]
[[4, 8], [9, 2]]

我发现第一个更具可读性。

答案 1 :(得分:0)

您不需要使用reduce来减少每个元素的值。
尝试使用地图

arr = map( lambda x:[x[0]-1,x[1]-1],arr)