map函數(shù)第一個(gè)參數(shù)是一個(gè)函數(shù)function,第二個(gè)參數(shù)是一個(gè)可迭代的對(duì)象iterable,他的功能是將可迭代對(duì)象iterable里面的每一項(xiàng)都應(yīng)用到函數(shù)function中,然后返回一個(gè)迭代器。
創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、集安網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、購物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為集安等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
可迭代器里面有多少個(gè)元素則結(jié)果就包含多少個(gè)元素
filter() 函數(shù)用于過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。
該接收兩個(gè)參數(shù),第一個(gè)為函數(shù),第二個(gè)為序列,序列的每個(gè)元素作為參數(shù)傳遞給函數(shù)進(jìn)行判斷,然后返回 True 或 False,最后將返回 True 的元素放到新列表中。
reduce() 函數(shù)會(huì)對(duì)參數(shù)序列中元素進(jìn)行累積。
函數(shù)將一個(gè)數(shù)據(jù)集合(鏈表,元組等)中的所有數(shù)據(jù)進(jìn)行下列操作:用傳給 reduce 中的函數(shù) function(有兩個(gè)參數(shù))先對(duì)集合中的第 1、2 個(gè)元素進(jìn)行操作,得到的結(jié)果再與第三個(gè)數(shù)據(jù)用 function 函數(shù)運(yùn)算,最后得到一個(gè)結(jié)果。
map() 會(huì)根據(jù)提供的函數(shù)對(duì)指定序列做映射。
第一個(gè)參數(shù) function 以參數(shù)序列中的每一個(gè)元素調(diào)用 function 函數(shù),返回包含每次 function 函數(shù)返回值的新列表。 擴(kuò)展資料
map() 函數(shù)語法:
map(function, iterable, ...);
參數(shù):
function -- 函數(shù);
iterable -- 一個(gè)或多個(gè)序列
不知道你的dataSet 是什么數(shù)據(jù),是否是從數(shù)據(jù)庫取出來的結(jié)果游標(biāo),
如果是的 那么dataSet 只能用一次,用空之后它就為空了
檢測方法
D = map(set,dataSet)
print dataSet #看看這里的 dataSet 是否為空了
如果是以上說的情況 很容易解決
操作之前 給 給個(gè)變量 接納一哈 這個(gè)結(jié)果集
tmp = dateSet
D = map(set,tmp)
print len(list(D))
print len(list(D))
map是python內(nèi)置函數(shù),會(huì)根據(jù)提供的函數(shù)對(duì)指定的序列做映射。
_ap()函數(shù)的格式是:map(function,iterable,...)
Python中map()、filter()、reduce()這三個(gè)都是應(yīng)用于序列的內(nèi)置函數(shù)。
格式:
map(func, seq1[, seq2,…])
第一個(gè)參數(shù)接受一個(gè)函數(shù)名,后面的參數(shù)接受一個(gè)或多個(gè)可迭代的序列,返回的是一個(gè)集合。
Python函數(shù)編程中的map()函數(shù)是將func作用于seq中的每一個(gè)元素,并將所有的調(diào)用的結(jié)果作為一個(gè)list返回。如果func為None,作用同zip()。
1、當(dāng)seq只有一個(gè)時(shí),將函數(shù)func作用于這個(gè)seq的每個(gè)元素上,并得到一個(gè)新的seq。
讓我們來看一下只有一個(gè)seq的時(shí)候,map()函數(shù)是如何工作的。
從上圖可以看出,函數(shù)func函數(shù)會(huì)作用于seq中的每個(gè)元素,得到func(seq[n])組成的列表。下面舉得例子來幫助我們更好的理解這個(gè)工作過程。
#使用lambda
print map(lambda x: x % 2, range(7))
[0, 1, 0, 1, 0, 1, 0]123123
#使用列表解析
print [x % 2 for x in range(7)]
[0, 1, 0, 1, 0, 1, 0]123123
一個(gè)seq時(shí),可以使用filter()函數(shù)代替,那什么情況不能代替呢?
2、當(dāng)seq多于一個(gè)時(shí),map可以并行(注意是并行)地對(duì)每個(gè)seq執(zhí)行如下圖所示的過程:
從圖可以看出,每個(gè)seq的同一位置的元素同時(shí)傳入一個(gè)多元的func函數(shù)之后,得到一個(gè)返回值,并將這個(gè)返回值存放在一個(gè)列表中。下面我們看一個(gè)有多個(gè)seq的例子:
print map(lambda x , y : x ** y, [2,4,6],[3,2,1])
[8, 16, 6]1212
如果上面我們不使用map函數(shù),就只能使用for循環(huán),依次對(duì)每個(gè)位置的元素調(diào)用該函數(shù)去執(zhí)行。還可以使返回值是一個(gè)元組。如:
print map(lambda x , y : (x ** y, x + y), [2,4,6],[3,2,1])
[(8, 5), (16, 6), (6, 7)]1212
當(dāng)func函數(shù)時(shí)None時(shí),這就同zip()函數(shù)了,并且zip()開始取代這個(gè)了,目的是將多個(gè)列表相同位置的元素歸并到一個(gè)元組。如:
print map(None, [2,4,6],[3,2,1])
[(2, 3), (4, 2), (6, 1)]1212
需要注意的是:
map無法處理seq長度不一致、對(duì)應(yīng)位置操作數(shù)類型不一致的情況,這兩種情況都會(huì)報(bào)類型錯(cuò)誤。如下圖:
3、使用map()函數(shù)可以實(shí)現(xiàn)將其他類型的數(shù)轉(zhuǎn)換成list,但是這種轉(zhuǎn)換也是有類型限制的,具體什么類型限制,在以后的學(xué)習(xí)中慢慢摸索吧。這里給出幾個(gè)能轉(zhuǎn)換的例子:
***將元組轉(zhuǎn)換成list***
map(int, (1,2,3))
[1, 2, 3]
***將字符串轉(zhuǎn)換成list***
map(int, '1234')
[1, 2, 3, 4]
***提取字典的key,并將結(jié)果存放在一個(gè)list中***
map(int, {1:2,2:3,3:4})
[1, 2, 3]
***字符串轉(zhuǎn)換成元組,并將結(jié)果以列表的形式返回***
map(tuple, 'agdf')
[('a',), ('g',), ('d',), ('f',)]
#將小寫轉(zhuǎn)成大寫
def u_to_l (s):
return s.upper()
print map(u_to_l,'asdfd')
map函數(shù)的用法如下:
map(func, lst) ,將傳?的函數(shù)變量 func 作?到 lst 變量的每個(gè)元素中,并將結(jié)果組成新的列表 (Python2)/ 迭代器(Python3) 返回。
注意:
map()返回的是一個(gè)迭代器,直接打印map()的結(jié)果是返回的一個(gè)對(duì)象。
map函數(shù)示例代碼:
lst = ['1', '2', '3', '4', '5', '6']
print(lst)
lst_int = map(lambda x: int(x), lst)
# print(list(lst_int))
for i in lst_int:
print(i, end=' ')
print()
print(list(lst_int))
網(wǎng)站名稱:map函數(shù)python,map函數(shù)python求數(shù)的每位的值
網(wǎng)站地址:http://jinyejixie.com/article30/dsecspo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、電子商務(wù)、外貿(mào)建站、品牌網(wǎng)站建設(shè)、定制開發(fā)、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容