Python map學習筆記
阿新 • • 發佈:2019-01-05
猿人學Python教程學習筆記之map,map是一個高階用法,字面意義是對映,它的作用就是把一個數據結構對映成另外一種資料結構。
map用法比較繞,最好是對基礎資料結構很熟悉了再使用,比如列表,字典,序列化這些。
map的基本語法如下:
map(function_object, iterable1, iterable2, ...)
map函式需要一個函式物件和任意數量的iterables,如list,dictionary等。它為序列中的每個元素執行function_object,並返回由函式物件修改的元素組成的列表。
示例如下:
def add2(x): return x+2 map(add2, [1,2,3,4]) # Output: [3,4,5,6]
在上面的例子中,map對list中的每個元素1,2,3,4執行add2函式並返回[3,4,5,6]
接著看看如何用map和lambda重寫上面的程式碼:
map(lambda x: x+2, [1,2,3,4]) #Output: [3,4,5,6]
僅僅一行即可搞定!
使用map和lambda迭代dictionary:
dict_a = [{'name': 'python', 'points': 10}, {'name': 'java', 'points': 8}] map(lambda x : x['name'], dict_a) # Output: ['python', 'java'] map(lambda x : x['points']*10, dict_a) # Output: [100, 80] map(lambda x : x['name'] == "python", dict_a) # Output: [True, False]
以上程式碼中,dict_a中的每個dict作為引數傳遞給lambda函式。lambda函式表示式作用於每個dict的結果作為輸出。
map函式作用於多個iterables
list_a = [1, 2, 3] list_b = [10, 20, 30] map(lambda x, y: x + y, list_a, list_b) # Output: [11, 22, 33]
這裡,list_a和list_b的第i個元素作為引數傳遞給lambda函式。
在Python3中,map函式返回一個惰性計算(lazily evaluated)的迭代器(iterator)或map物件。就像zip函式是惰性計算那樣。
我們不能通過index訪問map物件的元素,也不能使用len()得到它的長度。
但我們可以強制轉換map物件為list:
map_output = map(lambda x: x*2, [1, 2, 3, 4]) print(map_output) # Output: map object: list_map_output = list(map_output) print(list_map_output) # Output: [2, 4, 6, 8]