Python-函數式編程-map reduce filter lambda 三元運算式 閉包

來源:互聯網
上載者:User

標籤:物件導向   長度   app   函數式編程   txt   port   函數調用   lis   lse   

lambda

  匿名函數,核心是作為運算元,處理邏輯只有一行但具有函數的特性,核心用於函數式編程中

 

三元運算子

  其實本質上是if分支的簡化版,滿足條件返回 if 前面的值,不滿足條件返回 else後面的值

# 100 < 100 返回 False, 則 返回 else後面的值value = 100 if 100 < 100 else 10print(value)

  

map

  映射函數(依次把可迭代對象(可多個)中的值依次傳遞到函數中,然後返回產生器(長度以最短的為基礎))

numbers = [1, 2, 3, 4]names = [‘bei_men_chui_xue‘, ‘qi_niu_yun‘]numbers = map(lambda value: value + 1, numbers)students = map(lambda value: value.upper(), names)print(list(numbers))print(list(students))

  

reduce

  減少函數(連續計算,處理函數中第一個值是上一次函數執行的返回結果,第二個值是依次從迭代對象中的值,傳遞完則返回最後函數執行的結果)

from random import randintfrom functools import reducenumbers = [randint(-10, 10) for _ in range(10)]print(numbers)print(sum(numbers))numbers_sum = reduce(lambda one, two: one + two, numbers)print(numbers_sum)

  

filter

  依次依順序把可迭代對象傳入一個函數,擷取函數返回為True的值,變成產生器

from random import randintnumbers = [randint(-10, 10) for _ in range(10)]print(numbers)# 取大於等於0 的整數result = filter(lambda value: value >= 0, numbers)print(list(result))

 

閉包

  函數 + 環境變數(放在上層函數, 上層函數沒有任何參數,則不能形成閉包) (不再受外層函數之外的任何參數影響)

  閉包架構 函數內再定義一個函數,外層函數返回內層函數名,內層函數需要引用外層函數變數

  閉包意義:函數調用的現場(上層函數的變數)儲存了起來, 通過 nonlocal 聲明不是當前函數局部變數,進行現場變數的修改

  閉包是裝飾器實現的原理,所有的閉包問題都可以通過物件導向類的方式解決,選擇簡單實現的額方法

def is_jpg(name):    """判斷檔案的尾碼名是是不是jpg,如果不是則添加上jpg"""    def wrapper(filename):        if filename.endswith(name):            return filename        else:            return filename + name    return wrapperif __name__ == ‘__main__‘:    f = is_jpg(‘.jpg‘)    print(f(‘beimenchuixue.txt‘))    print(f(‘beimenchuixue.jpg‘))

  

經驗:

  1. 三元運算子其實本質上是if分支的簡寫邏輯

  2. 經常使用的是命令是編程,命令式編程包含流程式控制制、函數、分支、迴圈,函數式編程包括map reduce filter lambda,理論上可以替換所有命令式編程

  3. 命令式編程可以使用函數式編程簡化代碼邏輯

  4. 函數閉包,本質上保留了上層函數的變數

  

 

Python-函數式編程-map reduce filter lambda 三元運算式 閉包

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.