2016-11-18 53 views
0

在Javascript中,当我们执行高阶函数时,我们保持对元素,索引和迭代的访问,我们执行函数。例如:你能跟踪使用python或其他更高阶函数的地图吗?

[10,20,30].map(function(element, index, array) { 
    return elem + 2 
} 

我们维护对元素,索引和数组的访问。

在Python中,这可能与Python的内置Map,Filter和Reduce方法有关吗?据我所知,reduce内部的回调只能访问当前的累计值和下一个值。请让我知道如何在使用Python进行映射时保持对索引的访问,就像在Javascript中一样。由于

回答

1

而不是使用mapfilter的你可以只使用list comprehensionenumerate返回(index, element)元组:

>>> l = [10,20,30] 
>>> [i * x for i, x in enumerate(l)] 
[0, 20, 60] 

当然,你可以结合enumeratemap很好,但它会导致更复杂的代码:

>>> list(map(lambda x: x[0] * x[1], enumerate(l))) 
[0, 20, 60] 
+0

是的,所以答案是你没有能力做到这一点与地图,过滤器或减少功能,应该使用电子商务算出呢? – JonathanMitchell

+0

@JonathanMitchell是的,在Python map中没有参数等来获取索引或其他一些与Javascript map完全相同的方法。如果你想让项目和索引'枚举'是要走的路。还要注意,在Python'map'或'filter'中,不仅可以使用列表/数组,而且可以使用任何迭代器。在上面的例子中'l'可以简单地变成发电机。 – niemmi