小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

python的函數(shù)式特性

 非常尛貝 2012-04-07
列表解析來(lái)自函數(shù)式編程語(yǔ)言Hskell,可以用于動(dòng)態(tài)的創(chuàng)建列表。
python函數(shù)式編程的特性:lamda, map, filter等。通過(guò)列表解析,他們可以簡(jiǎn)化為一個(gè)列表解析式子,
map,所有的列表成員應(yīng)用一個(gè)操作。
filter 基于條件表達(dá)式對(duì)列表進(jìn)行過(guò)濾。
lambda允許創(chuàng)建一行的函數(shù)對(duì)象。
map函數(shù)python實(shí)現(xiàn)代碼:
def map(func,seq): 
    mapped_seq = [] 
    for eachItem in seq: 
        mapped_seq.append(func(eachItem)) 
    return mapped_seq 

filter函數(shù)python代碼實(shí)現(xiàn):


def filter(bool_func,seq): 
    filtered_seq = [] 
    for eachItem in seq: 
        if bool_func(eachItem): 
            filtered_seq.append(eachItem) 
    return filtered_seq 



reduce函數(shù),func為二元函數(shù),將func作用于seq序列的元素,每次攜帶一對(duì)(先前的結(jié)果以及下一個(gè)序列的元素),連續(xù)的將現(xiàn)有的結(jié)果和下一個(gè)值作用在獲得的隨后的結(jié)果上,最后減少我們的序列為一個(gè)單一的返回值。
reduct函數(shù)python代碼實(shí)現(xiàn):


def reduce(bin_func,seq,initial=None): 
    lseq = list(seq) 
    if initial is None: 
        res = lseq.pop(0) 
    else: 
        res = initial 
    for eachItem in lseq: 
        res = bin_func(res,eachItem) 
    return res 





下面是測(cè)試的代碼


#coding:utf-8
def map_func(lis):
    return lis + 1
def filter_func(li):
    if li % 2 == 0:
        return True
    else:
        return False
        
def reduce_func(li, lis):
    return li + lis
    
li = [1,2,3,4,5]
map_l = map(map_func, li) #將li中所有的數(shù)都+1
filter_l = filter(filter_func, li) #得到li中能被2整除的
reduce_l = reduce(reduce_func, li) #1+2+3+4+5
print map_l
print filter_l
print reduce_l

運(yùn)行結(jié)果如下:
C:\>python test1.py
[2, 3, 4, 5, 6]
[2, 4]
15

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多