lambda錶達式的主要作用就是化簡代碼。

匿名函數一般都是作為參數使用,其他地方一般不會使用。

1、lambda的應用場景

如果一個函數有一個返回值,並且只有一句代碼,可以使用lambda簡化。

2、lambda語法

lambda 參數列錶 : 錶達式

注意:

  • lambda錶達式的參數可有可無,函數的參數在lambda錶達式中完全適用。
  • lambda錶達式能接收任何數量的參數但只能返回一個錶達式的值。

3、快速入門

# 函數
def fn1():
return 200 print(fn1) # <function fn1 at 0x0000000002665948>
print(fn1()) # 200 # lambda錶達式
# lambda 參數列錶: 錶達式
fn2 = lambda: 100
print(fn2) # <function <lambda> at 0x00000000026658B8>
print(fn2()) # 100

注意:直接打印lambda錶達式,輸出的是此lambda的內存地址。

圖示如下:

4、示例:計算a + b

(1)函數實現

def add(a, b):
return a + b result = add(1, 2)
print(result) # 3

思考:需求簡單,是否代碼多?

(2)lambda實現

fn1 = lambda a, b: a + b
print(fn1(1, 2)) # 3

5、lambda的參數形式

(1)無參數

fn1 = lambda: 100
print(fn1()) # 100

(2)一個參數

fn1 = lambda a: a
print(fn1('hello world')) # hello world

(3)默認參數

fn1 = lambda a, b, c=100: a + b + c
print(fn1(10, 20)) # 130
print(fn1(10, 20, 200)) # 230

(4)可變參數:*args

fn1 = lambda *args: args
print(fn1(10, 20, 30)) # (10, 20, 30)
print(fn1(10)) # (10,)

注意:這裏的可變參數傳入到lambda之後,返回值為元組。

(5)可變參數:**kwargs

fn1 = lambda **kwargs: kwargs
print(fn1(name='Python')) # {'name': 'Python'}
print(fn1(name='python', age=20)) # {'name': 'python', 'age': 20}

注意:這裏的可變參數傳入到lambda之後,返回值為字典。

6、lambda的應用

(1)帶判斷的lambda

# 需求:比較兩個數大小,誰大返回誰
fn1 = lambda a, b: a if a > b else b
print(fn1(1000, 500))

(2)列錶數據按字典key的值排序

students = [
{'name': 'TOM', 'age': 20},
{'name': 'ROSE', 'age': 19},
{'name': 'Jack', 'age': 22}
] # 按name值昇序排列(x錶示昇降序的元素,這裏是字典變量)
students.sort(key=lambda x: x['name'])
print(students) # 按name值降序排列(reverse=True 降序)
students.sort(key=lambda x: x['name'], reverse=True)
print(students) # 按age值昇序排列
students.sort(key=lambda x: x['age'])
print(students)

『無為則無心』Python函數 — 34、lambda錶達式的更多相關文章

  1. 『無為則無心』Python函數 — 25、Python中的函數

    目錄 1.函數的使用 (1)定義函數 (2)調用函數 (3)使用函數的注意事項 2.函數的參數 3.實參的類型 Python函數的說明: Python中函數的應用非常廣泛,前面章節中我們已經接觸過多個 ...

  2. 『無為則無心』Python函數 — 26、Python函數參數的傳遞方式

    目錄 1.比特置參數 2.關鍵字參數 3.缺省參數(默認參數) 4.不定長參數(可變參數) (1)包裹比特置傳遞 (2)包裹關鍵字傳遞 5.比特置參數.默認參數.可變參數的混合使用 6.拓展:參數解包 提示 ...

  3. 『無為則無心』Python函數 — 28、Python函數的簡單應用

    目錄 1.函數嵌套調用 2.Python函數的簡單應用 (1)打印線條 (2)函數計算 (3)打印圖形 3.函數的說明文檔 (1)函數的說明文檔的作用 (2)函數說明文檔的語法 (3)查看函數的說明文 ...

  4. 『無為則無心』Python函數 — 27、Python函數的返回值

    目錄 1.返回值概念 2.return關鍵字的作用 3.返回值可以返回的數據類型 4.函數如何返回多個值 5.fn5 和 fn5()的區別 6.總結: 1.返回值概念 例如:我們去超市購物,比如買飲料 ...

  5. 『無為則無心』Python函數 — 29、Python變量和參數傳遞

    目錄 1.Python的變量 (1)Python變量不能獨立存在 (2)變量是內存中數據的引用 (3)注意點 2.了解變量的引用 3.Python的參數傳遞(重點) (1)示例 (2)結論 (3)總結 ...

  6. 『無為則無心』Python函數 — 30、Python變量的作用域

    目錄 1.作用於的概念 2.局部變量 3.全局變量 4.變量的查找 5.作用域中可變數據類型變量 6.多函數程序執行流程 1.作用於的概念 變量作用域指的是變量生效的範圍,在Python中一共有兩種作 ...

  7. 『無為則無心』Python函數 — 31、命名空間(namespace)

    目錄 1.什麼是命名空間 2.三種命名空間 3.命名空間查找順序 4.命名空間的生命周期 5.如何獲取當前的命名空間 1.什麼是命名空間 命名空間指的是變量存儲的比特置,每一個變量都需要存儲到指定的命名 ...

  8. 『無為則無心』Python基礎 — 6、Python的注釋

    目錄 1.注釋的作用 2.注釋的分類 單行注釋 多行注釋 3.注釋的注意事項 4.什麼時候需要使用注釋 5.總結 提示:完成了前面的准備工作,之後的文章開始介紹Python的基本語法了. Python ...

  9. 『無為則無心』Python基礎 — 4、Python代碼常用調試工具

    目錄 1.Python的交互模式 2.IDLE工具使用說明 3.Sublime3工具的安裝與配置 (1)Sublime3的安裝 (2)Sublime3的配置 4.使用Sublime編寫並調試Pytho ...

  10. 『無為則無心』Python基礎 — 7、Python的變量

    目錄 1.變量的定義 2.Python變量說明 3.Python中定義變量 (1)定義語法 (2)標識符定義規則 (3)內置關鍵字 (4)標識符命名習慣 4.使用變量 1.變量的定義 程序中,數據都是 ...

隨機推薦

  1. Oracle 亂碼

    導入DMP之後 ..... 1.Oacle數據庫錶中數據亂碼 請檢查導出DMP的ORACLE數據庫編碼設置 修改ORACLE編碼與原DMP導出編碼一致 select userenv('language ...

  2. mybatis實戰教程(mybatis in action)之五:與spring3集成

    在這一系列文章中,前面講到純粹用mybatis 連接數據庫,然後 進行增删改查,以及多錶聯合查詢的的例子,但實際項目中,通常會用 spring 這個沾合劑來管理 datasource 等.充分利用sp ...

  3. guava學習--File

    使用Files類來執行那些基本的任務,比如:移動或複制文件,或讀取文件內容到一個字符串集合 Closer類,提供了一種非常幹淨的方式,確保Closeable實例被正確的關閉 ByteSource 和 ...

  4. 如何用javascript 的eval動態執行一個需要傳對象參數的函數

    代碼如下: var method = 'setRiskItemAmount_'+id[1]+'(id[0],id[2],this.value);'; console.log(method); eval ...

  5. C++模板編程

    如何處理函數模板中的函數體? 預備知識補充: 按照c++的語言系統,普通函數及類的聲明應該放在一個頭文件中(通常是.h. .hpp..hh為擴展名)裏: 而將其實現放在一個主代碼文件中(通常以.c . ...

  6. nginx日志每日定時寫入Hdfs

    #!/bin/bash hadoop_home=/opt/hadoop-2.4.0 tw_nginx_log_file=/home/chiline.com.all/access_com_tw.log ...

  7. msbuildtoolspath is not specified for the toolsversion xx

    本地先是安裝的vs2015,由於項目需求又安裝了vs2008,在用vs2008打開.csproj工程文件,出現了上圖的錯誤. 這一般是由於安裝了vs2015和vs2008沖突產生的問題. 解决方案: ...

  8. redhat7.4切換yum源為免費源

    1.redhat是Linux系統中付費的企業版,雖然安裝什麼是免費的,但是需要注册. 如果你有注册碼,暫請出門左拐(我沒有注册碼,所以我也不會注册,不用往下看了). Linux系統收費版:RedHat ...

  9. android 給LinearLayout中添加一定數量的控件,並讓著一定數量的控件從右到左移動,每隔若幹秒停頓一下,最後一個view鏈接第一個view,然後繼續移動循環往複,形成一個死循環簡單動畫效果

    主類:IndexAnimationLinearLayout.java package com.yw.sortlistview; import java.util.ArrayList; import j ...

  10. JanusGraph 圖數據庫安裝小記 ——以 JanusGraph 0.3.0 為例

    由於近期項目中有使用圖數據的需求,經過對比,我們選擇嘗試使用 JanusGraph.本篇小記記錄了我們安裝 JanusGraph 以及需要一起集成的 Cassandra + Elasticsearch ...