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])
這樣呢?答案仍然是木桶原理,大家可以自己去驗證。