【python】map、reduce和filter

map函數

map(func, Iterable)
接收一個func函數和一個序列Iterable,將Iterable的每個元素經過func函數處理後,返回一個新的Iterable。
類似列表推導式:[func(item) for item in iterable]

#!/usr/bin/env python
# encoding: utf-8

def sqr(item):
    return item * item

if __name__ == '__main__':
    objList = [1, 2, 3]
    newList = map(sqr, objList)
    print(newList)
    print(list(newList))
    print([sqr(item) for item in objList])
輸出結果:
<map object at 0x006325D0>
[1, 4, 9]
[1, 4, 9]

reduce函數

reduce(function, sequence, initial=None)
接收一個函數function和一個序列sequence,該函數需要接收兩個參數x和y;
若initial的值爲None,則function首次調用從sequence取兩個元素分別賦值給參數x和y;
若initial的值不爲None,則function首次調用參數x=initial,另外從sequence取一個元素賦值給參數y;
函數function上一次調用的返回結果作爲x參數的值,並從sequence剩餘元素中選取一個元素作爲參數y的值傳遞給函數function,直到sequence元素選取結束;
返回結果爲最後一次function調用的返回值。

#!/usr/bin/env python
# encoding: utf-8

from functools import reduce


def add(x, y):
    return x + y


if __name__ == '__main__':
    objList = [1, 2, 3, 4]
    print(reduce(add, objList))
    print(reduce(add, objList, 20))
輸出結果爲:
10
30

filter

filter(func, Iterable)
接收一個函數func和一個序列Iterable
函數func用於過濾掉Iterable中不符合條件的元素,返回一個由使得函數func返回值爲True的元素組成的新的可迭代對象。

#!/usr/bin/env python
# encoding: utf-8

def func(item):
    return item % 2 == 0


if __name__ == '__main__':
    objList = [1, 2, 3, 4, 5]
    print(filter(func, objList))
    print(list(filter(func, objList)))
輸出結果爲:
<filter object at 0x01E52270>
[2, 4]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章