Python有常用的map、reduce等函數,但是沒有foreach,不過自己寫一個也不難:
定義
# 需要Python3
def foreach(function, iterator):
for item in iterator:
function(item)
示例
輸出所有疊代器中的元素:
>>> foreach(lambda value: print(value), range(5))
0
1
2
3
4
輸出疊代器中的所有偶數:
>>> def echo_all_even(value):
... if value % 2 == 0:
... print(value)
...
>>> foreach(echo_all_even, range(5))
0
2
4
注意上面的示例我們定義了一個echo_all_even的臨時函數,因為Python隻支援在lambda中寫單個表達式。 :(
for、map和foreach的差別:
foreach的作用是在不改變疊代器中的值的前提下(單純依靠函數的副作用),将函數應用到疊代器中的各個元素上,主要是用作輸出和調試作用,它一般不傳回值。
foreach是for之上的一個抽象,for可以隻疊代疊代器中的一部分值,而且可能修改疊代器中的值,而foreach疊代疊代器中的所有值,foreach也不修改疊代器中的值。
map和foreach類似,都是将一個函數應用到疊代器的所有值中,但map傳回一個新的清單作為結果,而foreach不傳回值。