2016-11-18 20 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