亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Python3中map(),reduce(),filter()怎么使用

發布時間:2022-08-04 14:02:09 來源:億速云 閱讀:152 作者:iii 欄目:開發技術

這篇文章主要介紹“Python3中map(),reduce(),filter()怎么使用”,在日常操作中,相信很多人在Python3中map(),reduce(),filter()怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python3中map(),reduce(),filter()怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

1.map()

map() 可以用于在函數中對指定序列做映射,返回值是一個迭代器,其使用語法如下:

map(function, *iterables)

上面的第一個參數 function 指一個函數,第二個參數 iterable 指一個或多個可迭代對象,在執行過程中,會對可迭代對象中的每一個元素調用 function 函數做計算,最后得到一個新的迭代器對象,而這個新的迭代器對象,會包含有每次調用 function 函數的返回值。

只傳入一個可迭代對象:

"""計算列表中每個元素的三次方"""
def demo_map(x):
    return x ** 3
nums = [1, 2, 3, 4, 5]
print(list(map(demo_map, nums)))  # 輸出:[1, 8, 27, 64, 125]

# 使用匿名函數
print(list(map(lambda x: x ** 3, nums)))  # 輸出:[1, 8, 27, 64, 125]

傳入多個可迭代對象

"""計算3個列表中對應下標元素的和"""
def demo_map(x, y, z):
    return x + y + z
nums1 = [1, 2, 3, 4, 5]
nums2 = [11, 22, 33, 44, 55]
nums3 = [100, 200, 300, 400, 500]
print(list(map(demo_map, nums1, nums2, nums3)))  # 輸出:[112, 224, 336, 448, 560]

# 使用匿名函數
print(list(map(lambda x, y, z: x + y + z, nums1, nums2, nums3)))  # 輸出:[112, 224, 336, 448, 560]

2.filter()

filter() 可以用于過濾序列,過濾掉不符合條件的元素,返回值也是一個迭代器,其使用語法如下:

filter(function or None, iterable)

和 map() 函數類似,上面的第一個參數 function 指一個函數,第二個參數 iterable 指一個可迭代對象,執行后會得到一個包含每次調用 function 函數返回值的迭代器。

"""找出從 -5 到 5 中能被 4 整除的所有整數"""
def demo_filter(x):
    return x % 4 == 0
nums = range(-5, 6)
print(list(nums))  # 輸出:[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]
# 傳入None,只返回true的值(0是False,所以被過濾掉了)
print(list(filter(None, nums)))  # 輸入:[-5, -4, -3, -2, -1, 1, 2, 3, 4, 5]
# 傳入正常函數,過濾出 nums 中能被 4 整除的整數
print(list(filter(demo_filter, nums)))  # 輸出:[-4, 0, 4]
# 使用匿名函數
print(list(filter(lambda x: x % 4 == 0, nums)))  # 輸出:[-4, 0, 4]

針對 map() 和 filter() 函數, 這里有 2 點需要注意:

  • map 中必須傳入一個正常函數,而在 filter 函數中則可以傳正常函數或者None,當傳入None時,只返回可迭代對象中所有符合 true 的值

  • map 中支持傳多個可迭代對象,而在 filter 函數中則只能傳一個可迭代對象

3.reduce()

reduce() 可以用于對參數序列中的元素進行累積,返回的是一個值。

在 Python3 中,reduce() 已被從全局名字空間里移除了,如果想要使用它,那么需通過引入 functools 模塊來調用 reduce() 函數,

其使用語法如下:

from functools import reduce
reduce(function, sequence[, initial])

上面的第一個參數 function 指一個函數,并且該函數必須含有2個參數,第二個參數 sequence 指一個序列,第三個參數 initial 指初始值,默認是None。

例如存在函數:reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]),它就相當于 ((((1+2)+3)+4)+5)。

from functools import reduce
def demo_reduce(x, y):
    return x + y
nums = range(1, 101)
print(reduce(demo_reduce, nums))  # 輸出:5050
# 使用匿名函數
print(reduce(lambda x, y: x + y, nums))  # 輸出:5050

# 設置初始值為 1000
print(reduce(lambda x, y: x + y, nums, 1000))  # 輸出:6050

上面的 map()、reduce()、filter() 都是屬于Python3中的高階函數,它們最大的好處在于可以讓代碼更加簡潔,當然,如果不使用它們,我們也可以通過其他方式來實現。

到此,關于“Python3中map(),reduce(),filter()怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

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

AI

金沙县| 陵水| 万载县| 凤山市| 东乌珠穆沁旗| 陇西县| 绵竹市| 永丰县| 苍南县| 阜新市| 华亭县| 岳西县| 织金县| 山西省| 叙永县| 永仁县| 木兰县| 定南县| 河津市| 孝义市| 金溪县| 河南省| 崇义县| 黑河市| 七台河市| 郎溪县| 方城县| 万年县| 枣庄市| 东台市| 阳高县| 晋城| 宜川县| 巫山县| 师宗县| 上蔡县| 西和县| 上犹县| 涞源县| 抚松县| 百色市|