中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python知識點的lambda和map及filter是什么

發布時間:2021-10-25 18:00:37 來源:億速云 閱讀:135 作者:柒染 欄目:編程語言

這篇文章給大家介紹Python知識點的lambda和map及filter是什么,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

通過示例介紹Python中的lambda,map,filter 函數的使用方法。

lambda

lambda 操作符(或 lambda函數)通常用來創建小巧的,一次性的匿名函數對象。它的基本語法如下:

lambda arguments : expression

lambda操作符可以有任意數量的參數,但是它只能有一個表達式,且不能包含任何語句,返回一個可以賦值給任何變量的函數對象。

下面通過一個例子來理解一下。首先看看一個Python函數:

def add(x, y):
    return x+y
    
# call the function
add(1, 2)  # Output: 3

上述函數名為add, 它需要兩個參數x和y,并返回它們的和。
接下來,我們把上面的函數變成一個lambda函數:

list_a = [1, 2, 3, 4, 5]
filter_obj = filter(lambda x: x % 2 == 0, list_a) # filter object 
even_num = list(filter_obj) # Converts the filer obj to a list
print(even_num) # Output: [2, 4]

lambda x, y : x + y中,x和y是函數的參數,x+y是表達式,它被執行并返回結果。
lambda x, y : x + y返回的是一個函數對象,它可以被賦值給任何變量。在本例中函數對象被賦值給了add變量。如果我們查看add的type,可以看到它是一個function

type(add)  # Output: function

絕大多數lambda函數作為一個參數傳給一個需要函數對象為參數的函數,比如map,reduce,filter等函數。

map

map的基本語法如下:

map(function_object, iterable1, iterable2, ...)

map函數需要一個函數對象和任意數量的iterables,如list,dictionary等。它為序列中的每個元素執行function_object,并返回由函數對象修改的元素組成的列表。
示例如下:

def add2(x):
    return x+2map(add2, [1,2,3,4])  # Output: [3,4,5,6]

在上面的例子中,map對list中的每個元素1,2,3,4執行add2函數并返回[3,4,5,6]
接著看看如何用map和lambda重寫上面的代碼:

map(lambda x: x+2, [1,2,3,4])  #Output: [3,4,5,6]

僅僅一行即可搞定!

使用map和lambda迭代dictionary:

dict_a = [{'name': 'python', 'points': 10}, {'name': 'java', 'points': 8}]
  
map(lambda x : x['name'], dict_a) # Output: ['python', 'java']
 
map(lambda x : x['points']*10,  dict_a) # Output: [100, 80]
map(lambda x : x['name'] == "python", dict_a) # Output: [True, False]

以上代碼中,dict_a中的每個dict作為參數傳遞給lambda函數。lambda函數表達式作用于每個dict的結果作為輸出。

map函數作用于多個iterables

list_a = [1, 2, 3]
list_b = [10, 20, 30]
  
map(lambda x, y: x + y, list_a, list_b) # Output: [11, 22, 33]

這里,list_a和list_b的第i個元素作為參數傳遞給lambda函數。

在Python3中,map函數返回一個惰性計算(lazily evaluated)的迭代器(iterator)或map對象。就像zip函數是惰性計算那樣。
我們不能通過index訪問map對象的元素,也不能使用len()得到它的長度。
但我們可以強制轉換map對象為list:

map_output = map(lambda x: x*2, [1, 2, 3, 4])
print(map_output) # Output: map object: 
list_map_output = list(map_output)
print(list_map_output) # Output: [2, 4, 6, 8]

filter

filter的基本語法如下:

filter(function_object, iterable)

filter函數需要兩個參數,function_object返回一個布爾值(boolean),對iterable的每一個元素調用function_object,filter只返回滿足function_object為True的元素。

和map函數一樣,filter函數也返回一個list,但與map函數不同的是,filter函數只能有一個iterable作為輸入。
示例:
返回偶數:

a = [1, 2, 3, 4, 5, 6]
filter(lambda x : x % 2 == 0, a) # Output: [2, 4, 6]

過濾dicts的list:

dict_a = [{'name': 'python', 'points': 10}, {'name': 'java', 'points': 8}]
filter(lambda x : x['name'] == 'python', dict_a)
# Output: [{'name': 'python', 'points': 10}]

和map一樣,filter函數在Python3中返回一個惰性計算的filter對象或迭代器。我們不能通過index訪問filter對象的元素,也不能使用len()得到它的長度。

list_a = [1, 2, 3, 4, 5]
filter_obj = filter(lambda x: x % 2 == 0, list_a) # filter object 
even_num = list(filter_obj) # Converts the filer obj to a list
print(even_num) # Output: [2, 4]

關于Python知識點的lambda和map及filter是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平度市| 九龙县| 吐鲁番市| 襄汾县| 广南县| 南华县| 德清县| 永清县| 普洱| 金川县| 民权县| 松江区| 科尔| 开封市| 秀山| 潢川县| 施秉县| 周宁县| 韩城市| 沾化县| 加查县| 二手房| 灵宝市| 琼海市| 大邑县| 会理县| 桑日县| 莎车县| 聂拉木县| 北辰区| 竹北市| 沿河| 永济市| 西乌| 临高县| 柳河县| 庄河市| 苏尼特右旗| 嵩明县| 万安县| 南投县|