map函式學習

2022-09-01 06:54:09 字數 1050 閱讀 4841

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()函式的原始碼:

class

map(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定義的虛...