map()函式是python內建的高階函式,作用是接收乙個函式和乙個可迭代物件,把可迭代物件的元素依次作用在函式上,得到乙個新的可迭代物件。
多說無益看個例子:
res = map(lambda x:x**2,[1,5,7,4,8])print(list(res)) #
[1, 25, 49, 16, 64]
print(list(res)) #
what?當我第二次再次輸出list(res)時列印的是空列表,抱著這種疑惑我查詢了map()函式的原始碼:
classmap(object):
"""map(func, *iterables) --> map object
make an iterator that computes the function using arguments from
each of the iterables. stops when the shortest iterable is exhausted.
"""
對呀,map確實接收的是乙個函式還有可迭代物件,但是下面的英語是什麼意思呢?so easy.意思很簡單就是說,建立乙個迭代器,使用迭代器的每個元素完成函式的功能,當迭代器耗盡時停止。
但是這跟我第二次輸出空列表有什麼關係呢?思來想去,我覺得應該是這樣的,第一次print(list(res))時迭代器執行到最後乙個元素8了,那麼第二次再次print(list(res))時迭代器從8開始位置繼續執行,結果8後面什麼也沒有,結果就是空列表。
我靠,這樣的話,那我這個list(res)只能用一次嗎?這豈不是很扯嗎?
可以這樣做,將list(res)賦值給乙個變數即可,這樣每次使用使用這個變數即可。
res = map(lambda x:x**2,[1,5,7,4,8])value=list(res)
print(value)#
[1, 25, 49, 16, 64]
print(value)#
[1, 25, 49, 16, 64]
Python內建函式學習 map
內建函式map 把乙個函式func依次對映到序列或迭代器物件的每個元素上,並返回乙個可迭代的map物件作為結果,map物件中 每個元素是原序列經過函式func處理後的結果,map 函式不對原序列或迭代器做任何修改 語法 map function,iterable,練習 1.把列表中的元素轉為字串,觀...
linux fork 函式學習
分類 專業學習 include include include int main case 0 default printf n d n n return 0 輸出結果1 fork child i am child parent i am parent parent getpid 4496 pare...
RecalcLayout 函式學習
1 它是用來將 dialogbar等可浮動的東西安排位置 處理和view frame之間的位置關係的,例如你直接用m wnd showwindow wm hide 隱藏了工具條,那就最好呼叫這個函式重新安排一下剩下的bar和view之間的位置 2 recalclayout是cframewnd定義的虛...