1. 程式人生 > 實用技巧 >python基礎-map函式

python基礎-map函式

map-直接翻譯為:地圖,對映,...與...的關係。

  這個函式會根據提供的函式對指定序列做對映。

先看需求,有一個list,需要對每個元素進行修改,加減乘除等,如何處理?肯定會用for迴圈

num_l=[1,3,6,4,9]
num_empty1=[]
num_empty2=[]
#加1
for i in num_l: 
    i+=1
    num_empty1.append(i)
print(num_empty1)
#平方
for i in num_l:
    i=i**2
    num_empty2.append(i)
print(num_empty2)

現在需要對程式碼進行優化,把需求寫到函式裡邊,使用時直接呼叫函式

num_l=[1,3,6,4,9]
num_empty1=[]
num_empty2=[]
#加1
def add_one(array):#引數是個列表
    for i in array:
        i+=1
        num_empty1.append(i)
    print(num_empty1)
#平方
def pf(array):#引數是個列表
    for i in array:
        i=i**2
        num_empty2.append(i)
    print(num_empty2)
add_one(num_l) #呼叫函式
pf(num_l)   #
呼叫函式

現在還需要對程式碼進行優化,把呼叫的函式寫成另一個函式的引數

num_l=[1,3,6,4,9]
def map_test(func,array):
    num_empty1 = []
    for i in num_l:
        res=func(i) #函式自動傳參
        num_empty1.append(res)
    return num_empty1
def add_one(i):
    i+=1
    return i
def pf(i):
    i=i**2
    return i
res1=map_test(add_one,num_l) #
map_test(函式,列表),由於在函式map_test內部func自動傳參,因此此處不用在傳參 res2=map_test(pf,num_l) res3=map_test(lambda x:x+1,num_l) #此處使用lambda函式來代替函式 res4=map_test(lambda x:x**2,num_l) print(res1) print(res2) print(res3) print(res4)

至此,其實完成的就是一個map函式,對某個可迭代物件,使用指定的某個函式對元素使用for迴圈進行操作。

map函式格式 :map(func,interable)。返回值是一個迭代器的記憶體地址,顯示需要使用list()

list_a=[1,2,6,8]
res=map(lambda x:x**3,list_a)
print(res)
print(list(res)) 
def pf(i):
    i=i**2
    return i
list_a=[1,2,6,8]
res=map(pf,list_a)#使用for迴圈遍歷list_a,所以func不傳參
print(res)
print(list(res))