你能用python或其他高阶函数中的地图跟踪索引吗?

时间:2016-11-18 03:29:12

标签: javascript python lambda higher-order-functions

在Javascript中,当我们执行更高阶函数时,我们维护对元素,索引和可迭代的访问,我们执行函数。例如:

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

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

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

1 个答案:

答案 0 :(得分:1)

而不是使用mapfilter,您可以使用enumerate与{{3}}一起返回(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]