python中的zip、lambda、map操作


python 中有幾個比較酷炫的操作,比如:zip、lambda、map

一、zip操作

zip字面意思:拉鏈。這么來記,把幾個東西扔到一個包里,拉上拉鏈,就算打包好了。通俗點講,就是把第1個參數、與第2個參數... 到第N個元素,按位置1個個對齊,打包輸出一系列元組(turple).

x = (1, 2)
y = ("a", "b")
zip_result = zip(x, y)
print(list(zip_result))

x = [4, 5, 6]
y = ['d', 'e']

zip_result = zip(x, y)
print(list(zip_result))

輸出:

[(1, 'a'), (2, 'b')]
[(4, 'd'), (5, 'e')]

注意第2行的輸出,這個類似木桶原理,元素個數最少的,決定最后輸出元素的個數,x里有[4,5,6]3個元素,而y里有['d','e']2個元素,最終結果里就只有2個turple。另外zip的結果是一個對象,要查看的話,得轉化成list對象,這樣才能友好的輸出。 

 

二、lambda

python里的lambda與c#、java不同,主要用於將一些邏輯簡單的代碼,寫得更簡潔(當然:是否更簡潔,這個有爭議,python里的 ... for ... in ... if ... 本身就很靈活,已經可以做到代碼風格非常簡潔)

# lambda 可以用於定義一些邏輯簡單的函數
add1 = lambda m, n: m + n


# 上面的lambda 等效於下面這個
def add2(a, b):
    return a + b


print(add1(1, 2))
print(add2(1, 2))

結果都是輸出3 

 

三、map操作

python時的map,完全不同於java中的map容器,它實際上有點類似於c#中的委托,可以把function函數本身當成一個參數。

# lambda 可以用於定義一些邏輯簡單的函數
add1 = lambda m, n: m + n


# 上面的lambda 等效於下面這個
def add2(a, b):
    return a + b


map_result = map(add1, [1, 2], [6, 7])
print(list(map_result))

map_result = map(add2, [3], [4])
print(list(map_result))

輸出:

[7, 9]
[7]

解釋一下:第一次是把[1,2]與[6,7]作用於add1函數,相當於[1+6,2+7],每個元數按位相加,第二次則是[3]與[4]相加。可能有同學會想,如果二個相加的列表,元素個數不對等,比如

map_result = map(add1, [1, 2], [6, 7, 8])

這樣呢?答案仍然是木桶原理,大家可以自己去驗證。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM