map函數python
Ⅰ python map()函數問題
不知道你的dataSet 是什麼數據,是否是從資料庫取出來的結果游標,
如果是的 那麼dataSet 只能用一次,用空之後它就為空了
檢測方法
D = map(set,dataSet)
print dataSet #看看這里的 dataSet 是否為空了
如果是以上說的情況 很容易解決
操作之前 給 給個變數 接納一哈 這個結果集
tmp = dateSet
D = map(set,tmp)
print len(list(D))
print len(list(D))
Ⅱ Python中map()問題
map()是 Python 內置的高階函數,它接收一個函數 f 和一個 list,並通過把函數 f 依次作用在 list 的每個元素上,得到一個新的 list 並返回。
你傳入的 '12345'字元串也是屬於列表。每個元素就是 ['1','2','3','4','5']
所以第一個輸出的無可厚非。
第二個報錯其實原因就是因為你的digits裡面沒有'1'這個key,所以會報錯。
根本不會出現'12345'這個key的。如果想出現,就把代碼修改下
defchar(s):
digits={'0':0,'12345':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
returndigits[s]
list(map(char,['12345','2','3','4','5']))
Ⅲ python 高階函數有哪些
1、高階函數
變數可以指向函數,函數的參數可以接收變數,那麼函數可以接收另一個函數作為參數,這種函數稱為高階函數。
(1)把函數作為實參
(2)把函數作為返回值
2、系統的內置高階函數
(1)map函數:接收兩個參數,一個是函數,一個是序列,map將傳入的函數依次作用到序列的每個元素,並且把結果作為新的列表返回
(2)rece函數:把一個函數作用到一個序列上,這個函數必須接收兩個參數,rece把結果和序列的下一個元素做累積計算
(3)filter函數:也接收一個函數和一個序列,和map函數不同的是,filter函數把傳入的函數依次作用於每個元素,然後返回返回值是True的元素
(4)sorted函數:排序函數
把用戶名按照首字母不區分大小寫排序
(5)sorted()函數按照關鍵字排序
關鍵字:商品個數
(6)sorted()函數按照關鍵字排序,用鍵值來查找
(7)lambda匿名函數:有時候傳參數時不需要顯示自定義的函數,直接傳入匿名函數更方便;冒號前面的x,y表示函數參數,匿名函數不需要擔心函數名的沖突,匿名函數也是一個函數對象,可以把匿名函數賦值給一個變數,再利用變數來調用函數,匿名函數也可以作為返回值返回
3、高階函數的應用:
(1)sorted函數:
(2)sorted函數默認是從小到大排序
4、裝飾器
裝飾器就是用來裝飾函數的:想要增加原有函數的功能,但是不希望修改原有函數的定義,在代碼運行期間動態增加功能的方式
(1)此裝飾器的功能:計算函數的運行時間
import functools
@functools.wraps(f) ##保留原有函數的屬性
運行結果:
(2)此裝飾器的功能:用戶登錄認證
運行結果:
(3)此裝飾器的功能:認證用戶的同時,顯示用戶的轉賬金額
import inspect
inspect.getcallargs()將傳的參數封裝為一個字典,字典的key值是形式參數,value值是實參
(4)此裝飾器的功能:確保收到的每個參數都是整數,是整數就求和,否則拋出錯誤
(5)此裝飾器的功能:給裝飾器傳參數,是整數和浮點數就求和
python學習網,大量的免費python視頻教程,歡迎在線學習!
Ⅳ python三個重要的內置函數(map, filter,rece)-
map函數第一個參數是一個函數function,第二個參數是一個可迭代的對象iterable,他的功能是將可迭代對象iterable裡面的每一項都應用到函數function中,然後返回一個迭代器。
可迭代器裡面有多少個元素則結果就包含多少個元素
filter() 函數用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。
該接收兩個參數,第一個為函數,第二個為序列,序列的每個元素作為參數傳遞給函數進行判斷,然後返回 True 或 False,最後將返回 True 的元素放到新列表中。
rece() 函數會對參數序列中元素進行累積。
函數將一個數據集合(鏈表,元組等)中的所有數據進行下列操作:用傳給 rece 中的函數 function(有兩個參數)先對集合中的第 1、2 個元素進行操作,得到的結果再與第三個數據用 function 函數運算,最後得到一個結果。
Ⅳ map函數的用法python
map函數的用法如下:
map(func, lst) ,將傳⼊的函數變數 func 作⽤到 lst 變數的每個元素中,並將結果組成新的列表 (Python2)/ 迭代器(Python3) 返回。
注意:
map()返回的是一個迭代器,直接列印map()的結果是返回的一個對象。
map函數示例代碼:
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))
Ⅵ Python 3.5.1的map函數結果輸出一串字元
python3
map和zip一樣返回的是迭代子,而不是所有的結果,你可以通過next函數獲取下一個或者外加list獲取全部
Ⅶ python d=map怎麼理解
Python中map()、filter()、rece()這三個都是應用於序列的內置函數。
格式:
map(func, seq1[, seq2,…])
第一個參數接受一個函數名,後面的參數接受一個或多個可迭代的序列,返回的是一個集合。
Python函數編程中的map()函數是將func作用於seq中的每一個元素,並將所有的調用的結果作為一個list返回。如果func為None,作用同zip()。
1、當seq只有一個時,將函數func作用於這個seq的每個元素上,並得到一個新的seq。
讓我們來看一下只有一個seq的時候,map()函數是如何工作的。
從上圖可以看出,函數func函數會作用於seq中的每個元素,得到func(seq[n])組成的列表。下面舉得例子來幫助我們更好的理解這個工作過程。
#使用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
一個seq時,可以使用filter()函數代替,那什麼情況不能代替呢?
2、當seq多於一個時,map可以並行(注意是並行)地對每個seq執行如下圖所示的過程:
從圖可以看出,每個seq的同一位置的元素同時傳入一個多元的func函數之後,得到一個返回值,並將這個返回值存放在一個列表中。下面我們看一個有多個seq的例子:
>>> print map(lambda x , y : x ** y, [2,4,6],[3,2,1])
[8, 16, 6]1212
如果上面我們不使用map函數,就只能使用for循環,依次對每個位置的元素調用該函數去執行。還可以使返回值是一個元組。如:
>>> print map(lambda x , y : (x ** y, x + y), [2,4,6],[3,2,1])
[(8, 5), (16, 6), (6, 7)]1212
當func函數時None時,這就同zip()函數了,並且zip()開始取代這個了,目的是將多個列表相同位置的元素歸並到一個元組。如:
>>> print map(None, [2,4,6],[3,2,1])
[(2, 3), (4, 2), (6, 1)]1212
需要注意的是:
map無法處理seq長度不一致、對應位置操作數類型不一致的情況,這兩種情況都會報類型錯誤。如下圖:
3、使用map()函數可以實現將其他類型的數轉換成list,但是這種轉換也是有類型限制的,具體什麼類型限制,在以後的學習中慢慢摸索吧。這里給出幾個能轉換的例子:
***將元組轉換成list***
>>> map(int, (1,2,3))
[1, 2, 3]
***將字元串轉換成list***
>>> map(int, '1234')
[1, 2, 3, 4]
***提取字典的key,並將結果存放在一個list中***
>>> map(int, {1:2,2:3,3:4})
[1, 2, 3]
***字元串轉換成元組,並將結果以列表的形式返回***
>>> map(tuple, 'agdf')
[('a',), ('g',), ('d',), ('f',)]
#將小寫轉成大寫
def u_to_l (s):
return s.upper()
print map(u_to_l,'asdfd')
Ⅷ Python map中的函數可以是map嗎
map是python內置函數,會根據提供的函數對指定的序列做映射。
_ap()函數的格式是:map(function,iterable,...)
Ⅸ Python 之內置函數:filter、map、rece、zip、enumerate
這幾個函數在 Python 裡面被稱為高階函數,本文主要學習它們的用法。
filter 函數原型如下:
第一個參數是判斷函數(返回結果需要是 True 或者 False),第二個為序列,該函數將對 iterable 序列依次執行 function(item) 操作,返回結果是過濾之後結果組成的序列。
簡單記憶:對序列中的元素進行篩選,獲取符合條件的序列。
返回結果為: ,使用 list 函數可以輸入序列內容。
map 函數原型如下:
該函數運行之後生成一個 list,第一個參數是函數、第二個參數是一個或多個序列;
下述代碼是一個簡單的測試案例:
上述代碼運行完畢,得到的結果是: 。使用 print(list(my_new_list)) 可以得到結果。
map 函數的第一個參數,可以有多個參數,當這種情況出現後,後面的第二個參數需要是多個序列。
map 函數解決的問題:
rece 函數原型如下:
第一個參數是函數,第二個參數是序列,返回計算結果之後的值。該函數價值在於滾動計算應用於列表中的連續值。
測試代碼如下:
最終的結果是 6,如果設置第三個參數為 4,可以運行代碼查看結果,最後得到的結論是,第三個參數表示初始值,即累加操作初始的數值。
簡單記憶:對序列內所有元素進行累計操作。
zip 函數原型如下:
zip 函數將可迭代的對象作為參數,將對象中對應的元素打包成一個個元組,然後返回由這些元組組成的列表。
如果各個迭代器的元素個數不一樣,則返回列表長度與最短的對象相同,利用星號( * )操作符,可以將元組解壓為列表。
測試代碼如下:
展示如何利用 * 操作符:
輸出結果如下:
簡單記憶:zip 的功能是映射多個容器的相似索引,可以方便用於來構造字典。
enumerate 函數原型如下:
參數說明:
該函數用於將一個可遍歷的數據對象組合為一個索引序列,同時列出數據和數據下標,一般用在 for 循環當中。
測試代碼如下:
返回結果為: 。
本文涉及的函數可以與 lambda 表達式進行結合,能大幅度提高編碼效率。最好的學習資料永遠是官方手冊
Ⅹ python中map函數的使用
map() 會根據提供的函數對指定序列做映射。
第一個參數 function 以參數序列中的每一個元素調用 function 函數,返回包含每次 function 函數返回值的新列表。 (10)map函數python擴展閱讀
map() 函數語法:
map(function, iterable, ...);
參數:
function -- 函數;
iterable -- 一個或多個序列