1. 程式人生 > >Python map學習筆記

Python map學習筆記

猿人學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]