日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

map内置函数分析所得到的思路

發布時間:2025/3/15 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 map内置函数分析所得到的思路 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

map:會根據提供的函數對指定序列做映射。

map(func, *iterables) --> map objectMake an iterator that computes the function using arguments fromeach of the iterables. Stops when the shortest iterable is exhausted."""

根據提示,map有一個函數名參數還有個動態參數,意思是將可迭代的對象打散然后把每一個元素傳入函數名作為參數運行讓后將函數返回值作為新的值映射傳入的參數。

現在有一個列表

l1 = [1,2,3,4,5,6],現在需要生成[1, 4, 9, 16, 25, 36]這樣的列表,也就是每個元素平方:

首先l1肯定是個可迭代的對象所有我們可以先構思成這樣:map(函數名,l1) l1會將每個元素傳入函數作為參數。所以我們這樣定義這個函數:

def func(x):return x**2
#這樣l1每遍歷一個元素函數func都會返回這個元素的平方
#所以就寫成了這樣:
g = map(func,l1)
print(list(g))  #[1, 4, 9, 16, 25, 36]

接下來我們分析下map原理

在沒接觸map前,你會寫出下面代碼:

def func(x):l1 = []for i in x:i = i**2l1.append(i)return l1
#我們定義了以上函數,當你輸入一個列表時會返回一個新列表每個元素是之前的平方
g=func([1,2,3,4,5)
print(g)#[1,4,8,16,25]

這樣確實實現了功能,但是如果我現在改變條件說新列表是原來每個元素的3次方,你又改成了這樣:

def func(x):l1 = []for i in x:i = i**3l1.append(i)return l1

大家發現了沒,其實我改的要求就是 i = i**3這行代碼,其實我們可以把這變的條件作為函數,寫成i = foo(i),而fun1這個函數為我定義函數的參數傳進去,這樣我就只需改參數就能實現多個功能:

def func(foo,x):
l1 = []
for i in x:
i = foo(i)
l1.append(i)
return l1
def foo(x):return x**2
print(func(foo,[1,2,3,4]))

大家會說你不是還是要定義另一個函數傳進去,這時匿名函數出來了

def func(foo,x):l1 = []for i in x:i = foo(i)l1.append(i)return l1 print(func(lambda x:x**2,[1,2,3,4])) print(func(lambda x:x**3,[1,2,3,4]))
#這樣是不是無論你要我對元列表加減乘除平方或者替換我都只需要改變我傳入的函數名參數就行了

?

轉載于:https://www.cnblogs.com/Kingfan1993/p/9519348.html

總結

以上是生活随笔為你收集整理的map内置函数分析所得到的思路的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。