1. 程式人生 > >python內置函數filter(),map(),reduce()筆記

python內置函數filter(),map(),reduce()筆記

叠代 筆記 function 運算 import 返回值 每次 條件 ini

‘‘‘
python reduce()函數:
reduce()函數會對參數序列中元素進行積累。

函數將一個數據集合(鏈表,元組等)中的所有數據進行下列操作:用傳給reduce中的函數 function(有兩個參數)
先對集合中的第 1、2 個元素進行操作,得到的結果再與第三個數據用 function 函數運算,最後得到一個結果。

語法:ruduce()
reduce(function,iterable,initializer)
參數:function-函數,有兩個參數
iterable--可叠代對象
initializer--可選,初始參數
返回值:返回函數計算結果:
‘‘‘
def add(x,y):
return x+y
print reduce(add,[1,2,3,4,5])
>>>15
#相當於
print reduce(lambda x,y:x+y,[1,2,3,4,5])
>>> 15
‘‘‘
python的map函數
map()會根據提供的函數對指定序列做映射
第一個參數function以參數序列匯總的每一個元素中調用function函數,返回包含每次 function 函數返回值的新列表。
語法:
map()函數語法:
map(function,iterable,...)
參數

function -- 函數,有兩個參數
iterable -- 一個或多個序列

返回值

返回列表。
‘‘‘
def map_fun(x):
return x**2
print map(map_fun,[1,2,3,4,5])
>>> [1,4,9,16,25]
print map(lambda x:x**2,[1,2,3,4,5])
>>> [1,4,9,16,25]

‘‘‘
Python filter() 函數
描述:
filter() 函數用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。

該接收兩個參數,第一個為函數,第二個為序列,序列的每個元素作為參數傳遞給函數進行判段,然後返回 True 或 False,最後將返回 True 的元素放到新列表中。
‘‘‘
print filter(lambda x:x%2==0,[1,2,3,4,5])

import math
print filter(lambda x:math.sqrt(x)%1==0,range(1,101))
>>> [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]


import math
def is_sqr(x):
return math.sqrt(x) % 1==0
newlist = filter(is_sqr,range(1,101))
print newlist
>>> [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]


python內置函數filter(),map(),reduce()筆記