久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    Python入門進階學習必備函數!

     靜幻堂 2019-01-17
    編程學習之路 2019-01-17 10:50:22


    Python入門進階學習必備函數!


    今天要給大家介紹的是幾個新手必備的函數。對于寫出更加優雅的Python代碼比較有幫助。

    在這里小編還得說一句,私信小編“01”獲取Python各類學習資料,希望對你們有幫助!

    Python入門進階學習必備函數!


    1. lambda 表達式

    匿名函數(英語:anonymous function)是指一類無需定義標識符(函數名)的函數。通俗來說呢,就是它可以讓我們的函數,可以不需要函數名。

    正常情況下,我們定義一個函數,使用的是 def 關鍵字,而當你學會使用匿名函數后,替代 def 的是 lambda

    這邊使用 deflambda 分別舉個例子,你很快就能理解。

    def mySum(x, y):
    return x+y
    mySum01(2, 3)
    # 5
    (lambda x, y: x+y)(2, 4)
    # 6

    從上面的示例,我們可以看到匿名函數直接運行,省下了很多行的代碼,有沒有?

    接下來,我們的仔細看一下它的用法

    帶 if/else

    >>>( lambda x, y: x if x < y else y )( 1, 2 )
    1

    嵌套函數

    >>>( lambda x: ( lambda y: ( lambda z: x + y + z )( 1 ) )( 2 ) )( 3 )
    6

    遞歸函數

    >>> func = lambda n:1 if n == 0 else n * func(n-1)
    >>> func(5)
    120

    或者

    >>> f = lambda func, n: 1 if n == 0 else n * func( func, n - 1 )
    >>> f(f,4)
    24

    從以上示例來看,lambda 表達式和常規的函數相比,寫法比較怪異,可讀性相對較差。除了可以直接運行之外,好像并沒有其他較為突出的功能,為什么在今天我們要介紹它呢?

    首先我們要知道 lambda 是一個表達式,而不是一個語句。正因為這個特點,我們可以在一些特殊的場景中去使用它。具體是什么場景呢?接下來我們會介紹到幾個非常好用的內置函數。

    2. map 函數

    map 函數,它接收兩個參數,第一個參數是一個函數對象(當然也可以是一個lambda表達式),第二個參數是一個序列。

    它可以實現怎樣的功能呢,我舉個例子你就明白了。

    >>> map(lambda x: x*2, [1,2,3,4,5])
    [2, 4, 6, 8, 10]

    可以很清楚地看到,它可以將后面序列中的每一個元素做為參數傳入lambda中。

    當我們不使用 map 函數時,你也許會這樣子寫。

    mylist=[]
    for i in [1,2,3,4,5]:
    mylist.append(i*2)

    3. filter 函數

    filter 函數,和 map 函數相似。同樣也是接收兩個參數,一個lambda 表達式,一個序列。它會遍歷后面序列中每一個元素,并將其做為參數傳入lambda表達式中,當表達式返回 True,則元素會被保留下來,當表達式返回 False ,則元素會被丟棄。

    下面這個例子,將過濾出一個列表中小于0的元素。

    >>>filter(lambda x: x < 0, range(-5, 5))
    [-5, -4, -3, -2, -1]


    4. reduce 函數

    reduce 函數,也是類似的。它的作用是先對序列中的第 1、2 個元素進行操作,得到的結果再與第三個數據用 lambda 函數運算,將其得到的結果再與第四個元素進行運算,以此類推下去直到后面沒有元素了。

    Python入門進階學習必備函數!

    reduce 邏輯演示


    這邊舉個例子你也就明白了。

    >>>reduce(lambda x,y: x+y, [1,2,3,4,5])
    15

    它的運算過程分解一下是這樣的。

    1+2=3
    3+3=6
    6+4=10
    10+5=15

    5. 注意點

    以上幾個函數,熟練的掌握它們的寫法,可以讓我們的代碼看起來更加的 Pythonic ,在某一程度上代碼看起來更加的簡潔。

    如果你是新手呢,你需要注意的是,以上示例是在 Python2.x 環境下演示的。而在 Python3.x 中,卻有所不同,你可以自己嘗試一下。

    這里總結一下:

    第一點,map 和 filter 函數返回的都不再是一個列表,而是一個迭代器對象。這里以map為例

    >>> map_obj = map(lambda x: x*2, [1,2,3,4,5])
    >>> from collections.abc import Iterator
    >>> isinstance(map_obj, Iterator)
    True
    >>> next(map_obj)
    2
    >>> list(map_obj)
    [4, 6, 8, 10]

    第二點,reduce 不可以直接調用,而是要先導入才能使用。

    from functools import reduce
    Python入門進階學習必備函數!

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 欧美激情一区二区三区成人| 白丝乳交内射一二三区| 久久精品国产亚洲AV高清热| 国产成人午夜精品福利| 粗大挺进朋友人妻淑娟| 中国女人高潮hd| 国产在线乱子伦一区二区| 国产精品久久国产精品99| 亚洲高清日韩专区精品| 曰韩亚洲AV人人夜夜澡人人爽| 精品人妻av区乱码| 国产综合色产在线视频欧美| 久久大蕉香蕉免费| 成人做受120秒试看试看视频| 乱子真实露脸刺激对白| 国产片AV国语在线观看手机版| 国产福利一区二区三区在线观看 | 制服丝袜美腿一区二区| 亚洲精品国产综合久久久久紧| 狠狠爱五月丁香亚洲综| 国产高清不卡一区二区| 一本大道中文日本香蕉| 国产一区二区三区在线观看免费| 国产午夜成人无码免费看| 深夜视频国产在线观看| 国产L精品国产亚洲区久久| 国偷自产一区二区三区在线视频| 色悠久久久久综合网伊| 一本精品中文字幕在线| 精品一区二区亚洲国产| 狠狠人妻久久久久久综合| 国产成AV人片在线观看天堂无码 | 亚洲中文久久久精品无码| 欧美黑人又粗又大又硬免费视频| 日韩有码精品中文字幕| 亚洲综合激情另类小说区| 艳女性享受在线观看| 亚洲欧美综合人成在线| 色8激情欧美成人久久综合电影| 欧美国产日产一区二区| 九九在线精品国产|