Pythont特殊語法filter,map,reduce,apply使用方法

這篇文章主要介紹了Pythont特殊語法filter,map,reduce,apply使用方法,需要的朋友可以參考下
(1)lambda

lambda是Python中一個很有用的語法,它允許你快速定義單行最小函數。類似於C語言中的宏,可以用在任何需要函數的地方。

基本語法如下:

函數名 = lambda args1,args2,…,argsn : expression

例如:

add = lambda x,y : x + y
print add(1,2)

(2)filter

filter函數相當於一個過濾器,函數原型爲:filter(function,sequence),表示對sequence序列中的每一個元素依次執行function,這裏function是一個bool函數,舉例說明:

sequence = [1,2,3,4,5,6,7,8,9,10]
fun = lambda x : x % 2 == 0
seq = filter(fun,sequence)
print seq

以下代碼就是表示篩選出sequence中的所有偶數。

filter函數原型大致如下:

def filter(fun,seq):
    filter_seq = []
    for item in seq:
        if fun(item):
            filter_seq.append(item)
    return filter_seq

(3)map

map的基本形式爲:map(function,sequence),是將function這個函數作用於sequence序列,然後返回一個最終結果序列。比如:

seq = [1,2,3,4,5,6]
fun = lambda x : x << 2
 
print map(fun,seq)

map的函數源代碼大致如下:

def map(fun,seq):
    mapped_seq = []
    for item in seq:
        mapped_seq.append(fun(item))
    return mapped_seq

(4)reduce

reduce函數的形式爲:reduce(function,sequence,initVal),function表示一個二元函數,sequence表示要處理的序列,而initVal表示處理的初始值。比如:

seq = [1,2,3,4,5,6,7,8,9,10]
fun = lambda x,y: x + y
 
print reduce(fun,seq,0)

表示從初始值0開始對序列seq中的每一個元素累加,所以得到結果是55

reduce函數的源代碼大致如下:

def reduce(fun,seq,initVal = None):
    Lseq = list(seq)
    if initVal is None:
        res = Lseq.pop(0)
    else:
        res = initVal
    for item in Lseq:
        res = fun(seq,item)
    return res

(5)apply

apply是用來間接地代替某個函數,比如:

def say(a,b):
    print a,b
 
apply(say,(234,'Hello World!'))

推薦我們的python學習基地,看前輩們是如何學習的!從基礎的python腳本、爬蟲、django、數據挖掘等編程技術,還有整理零基礎到項目實戰的資料,送給每一位愛學習python的小夥伴!每天都有老前輩定時講解Python技術,分享一些學習的方法和需要留意的小細節,點擊加入我們的 python學習者聚集地

發佈了33 篇原創文章 · 獲贊 35 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章