指一類無須定義識別符號的函式或子程式。
python用lambda語法定義匿名函式,只需用表示式而無需申明。(省略了用def宣告函式的標準步驟)
語法: lambda 形參:返回值
lambda函式能接收任何數量的引數但只能返回乙個表示式的值
# lambda 形參:返回值
sum = lambda arg1, arg2: arg1 + arg2
print(sum(1, 2))
# 執行結果
3
# 函式作為引數傳遞
def fun(a, b=2, myfun=pow):
print('a = ', a, end=';')
print('b = ', b, end=';')
print('result = ', myfun(a, b))
fun(2)
fun(2, 3)
fun(2, 3, lambda x, y: x + y)
fun(2, 3, lambda x, y: x ** y)
# 執行結果
a = 2;b = 2;result = 4
a = 2;b = 3;result = 8
a = 2;b = 3;result = 5
a = 2;b = 3;result = 8
問題1:複雜排序
from prettytable import prettytable as pt # 需要pip安裝prettytable包
# 複雜的排序:
def pretty_show(goods):
"""以**的方式友好的顯示商品資訊
"""# 例項化**物件
table = pt()
# 往**裡面新增表頭資訊
table.field_names = ["name", "price", "count"]
# 依次新增每一行商品的資訊;
for good in goods:
table.add_row(good)
# 最終顯示**
print(table)
goods = [
# 商品名稱 商品** 商品的數量
["電腦", 5999, 100],
["電視", 1999, 1000],
["手機", 2999, 50],
]pretty_show(goods)
# sorted方法, key:按照什麼進行排序
# reverse=true 降序
# 按照商品的**進行排序
sort_goods = sorted(goods, key=lambda x: x[1], reverse=true)
print("按照**進行排序".center(30, '*'))
pretty_show(sort_goods)
# 按照商品的數量進行排序
sort_count_goods = sorted(goods, key=lambda x: x[2])
print("按照商品數量進行排序".center(30, '*'))
pretty_show(sort_count_goods)
# 執行結果
+------+-------+-------+
| name | price | count |
+------+-------+-------+
| 電腦 | 5999 | 100 |
| 電視 | 1999 | 1000 |
| 手機 | 2999 | 50 |
+------+-------+-------+
***********按照**進行排序***********
+------+-------+-------+
| name | price | count |
+------+-------+-------+
| 電腦 | 5999 | 100 |
| 手機 | 2999 | 50 |
| 電視 | 1999 | 1000 |
+------+-------+-------+
**********按照商品數量進行排序**********
+------+-------+-------+
| name | price | count |
+------+-------+-------+
| 手機 | 2999 | 50 |
| 電腦 | 5999 | 100 |
| 電視 | 1999 | 1000 |
+------+-------+-------+
問題2
有乙個整數列表(10個元素), 要求調整元素順序,把所有的奇數放在前面,偶數放在後面
list = [3, 1, 2, 5, 6, 9, 7, 4, 0, 8]
# 按照1和0排序,偶數為1,奇數為0,排序後奇數在前,偶數在後
print(sorted(list, key=lambda x: 1 if x % 2 == 0 else 0))
# 執行結果
[3, 1, 5, 9, 7, 2, 6, 4, 0, 8]
問題3
(2018-攜程-春招題) 給定乙個整形陣列, 將陣列中所有的0移動到末尾, 非0項保持不變; 在原始陣列上進行移動操作, 勿建立新的陣列
#輸入: 陣列的記錄;0 7 0 2
#輸出: 調整後陣列的內容; 7 2 0 0
# **
list = [0, 3, 0, 1, 2, 0, 5, 6, 9, 0]
print(sorted(list, key=lambda x: 1 if x == 0 else 0))
# 執行結果
[3, 1, 2, 5, 6, 9, 0, 0, 0, 0]
python之匿名函式
在某些傳入函式的時候,我們不需要顯式的定義函式,我們可以設定乙個匿名函式來白哦是 比如map函式中,引數為乙個函式以及乙個可迭代物件 我們可以這樣 r map lambda x x x,1,2,3,4,5,6,7,8,9 p list r print p 如上,我們在map中沒有使用已定義好的函式,...
Python之匿名函式
開篇小福利 我們都知道,找工作投簡歷時,假如你運氣好,會得到乙個內推碼,它雖然不能使你一定會被招上,但是卻可以避免你的簡歷被機器過濾掉。那麼,問題來了,你知道像這種內推碼一樣的玩意兒是怎麼生成的嗎?下面將使用乙個簡單的程式,隨機生成一千個類似於內推碼的東西。1.匿名函式 匿名函式的關鍵字為lambd...
python之匿名函式
匿名函式 關鍵字為lambda 冒號前面是形參 冒號後面是返回值 什麼時候使用匿名函式呢?塊重複 這時候必須考慮用到匿名函式,降低程式的冗餘度 塊複雜 這時候可以考慮用到匿名函式,降低程式的可讀性 在python中有兩種函式,一種是def定義,一種是lambda函式.普通函式 def fun arg...