Python 入門之經典函式例項(二)
@R星校長
第2
關:lambda 函式 - 匿名函式的使用
在 Python 程式設計中我們除了可以用def
語句來定義函式之外,還可以使用lambda
來定義。我們用def
語句來定義函式時需要指定函式名字,而使用lambda
來定義函式時則不需要。lambda
函式是 Python 中一個非常獨特的函式型別。
lambda
函式又稱匿名函式,匿名函式顧名思義就是沒有名字的函式。可能我們現在還無法接受,函式沒有名字怎麼能行?但實際上是可以的。當我們在程式設計過程中只是臨時使用某些函式,而且這些函式的邏輯功能也很簡單時,就沒有必要非給這些函式取個名字不可。
這就類似於電影裡面都會有很多群眾演員,他們每個人所佔的戲份很少,只是起臨時演出的作用,所以一般沒有必要給臨時演員起一個電影名字,統一稱為群演就行。
匿名函式不需要return
來返回值,lambda
函式表示式本身的計算結果就是返回值。例如,我們可以用lambda
函式定義一個加法,計算兩個整數相加:
f = lambda x,y:x+y
print(f(1,2))
運算結果:
3
x
和y
是函式的兩個引數,:
後面的表示式x+y
表明函式的功能就是計算兩個數的和。在這裡我們並沒有給函式取名字,而是直接將匿名函式賦給變數f
。然後給f
傳入引數(1,2)
,就相當於給匿名函式傳入引數,得到返回結果3
。
儘管 Python 算不上是一門純函數語言程式設計語言,但它本身提供了很多函數語言程式設計的特性。像map
、reduce
、filter
、sorted
這些函式都支援函式作為引數,lambda
函式也可以應用在函數語言程式設計中。例如,現在有一個整數列表,要求按照列表中元素的絕對值從小到大排列。我們可以先採取普通def
函式解決這個問題:
# 給出一個包含正數和負數的列表
list1 = [2,3,-5,0,-4,-8,-1]
# 定義一個函式,返回輸入值的絕對值
def f(x):
return abs(x)
# 利用sorted函式對列表中的元素根據絕對值的大小升序排序
list2=sorted(list1, key=f)
# 輸出新列表
print(list2)
我們也可以採取lambda
函式更加簡便地實現這個目標:
# 給出一個包含正數和負數的列表
list1 = [2,3,-5,0,-4,-8,-1]
# 利用sorted函式對列表中的元素根據絕對值的大小升序排序
list2=sorted(list1, key=lambda x: abs(x))
# 輸出新列表
print(list2)
由這個例子可以看出,lambda
函式會使部分函數語言程式設計更加簡便與快捷。lambda
函式能起到速寫函式的作用,允許在使用的程式碼內嵌入一個函式的定義。在僅需要嵌入一小段可執行程式碼的情況下,就可以帶來更簡潔的程式碼結構。
# coding=utf-8
# 請在此新增程式碼,使用lambda來建立匿名函式,能夠判斷輸入的兩個數值的大小
########## Begin ##########
MAXIMUM = lambda x, y : max(x, y)
MINIMUM = lambda x, y : min(x, y)
########## End ##########
# 輸入兩個正整數
a = int(input())
b = int(input())
# 輸出較大的值和較小的值
print('較大的值是:%d' % MAXIMUM(a,b))
print('較小的值是:%d' % MINIMUM(a,b))
測試輸入:
5
12
預期輸出:
較大的值是:12
較小的值是:5
測試輸入:
7
3
預期輸出:
較大的值是:7
較小的值是:3
測試輸入:
120
89
預期輸出:
較大的值是:120
較小的值是:89
測試輸入:
13
110
預期輸出:
較大的值是:110
較小的值是:13
你可以忘掉失敗,但不能忘掉教訓;你可以忘掉昨天,但不能忘記歷史;你可以忘掉苦難,但不能忘卻艱辛;你可以忘掉傷疤,但不能忘卻恥辱。
相關文章
- Python 入門之經典函式例項之Map-Reduce - 對映與歸約的思想Python函式
- Python入門之函式呼叫(二)Python函式
- Python函式每日一講 - frozenset集合函式入門及例項Python函式
- Python——astroplan庫入門例項(二)PythonAST
- jquery經典例項之回到頂部jQuery
- 《Flutter 入門經典》之“Flutter 入門 ”Flutter
- Python入門經典案例一Python
- Python入門-函式Python函式
- [轉載] Python 機器學習經典例項Python機器學習
- python入門:range函式Python函式
- PHP入門之函式PHP函式
- JavaScript入門-函式function(二)JavaScript函式Function
- Python入門基礎知識例項,Python
- python例項建立銷燬的函式整理Python函式
- python-函式入門(一)Python函式
- 嵌入式開發 ARM入門經典
- csharp入門經典CSharp
- python例項:解決經典撲克牌遊戲 -- 四張牌湊24點 (二)Python遊戲
- Websocet 入門例項Web
- Flutter 入門例項Flutter
- TypeScript入門例項TypeScript
- SoapUI入門例項UI
- Python簡單函式迴圈綜合例項Python函式
- Python中compile函式的語法及例項!PythonCompile函式
- JavaScript函數語言程式設計入門經典JavaScript函數程式設計
- Python3經典100例(①)Python
- ActiveMQ入門系列二:入門程式碼例項(點對點模式)MQ模式
- python入門必會的助手函式:dir()函式Python函式
- Python入門教程之Python經典面試題(附答案)Python面試題
- OpenFaaS實戰之二:函式入門函式
- 遞迴函式例項大全遞迴函式
- 24 個例項入門並掌握「Webpack4」(二)Web
- 【廖雪峰python入門筆記】函式Python筆記函式
- python3.7 函式基礎入門Python函式
- 5-快速入門Python函式使用Python函式
- MySQL入門系列:儲存程式(二)之儲存函式簡介MySql儲存函式
- Unix 入門經典 筆記筆記
- python練手經典100例-推薦幾個適合新手練手的Python專案《python入門例子》Python