Python之匿名函式

2021-09-24 00:15:06 字數 3004 閱讀 4414

指一類無須定義識別符號的函式或子程式。

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...