python 中zip、lambda、map

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

一、zip操作

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

1

2

3

4

5

6

7

8

9

10

= (12)

= ("a""b")

zip_result = zip(x, y)

print(list(zip_result))

 

= [456]

= ['d''e']

 

zip_result = zip(x, y)

print(list(zip_result))

輸出:

1

2

[(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 ... 本身就很靈活,已經可以做到代碼風格非常簡潔)

1

2

3

4

5

6

7

8

9

10

11

# lambda 可以用於定義一些邏輯簡單的函數

add1 = lambda m, n: m + n

 

 

# 上面的lambda 等效於下面這個

def add2(a, b):

    return + b

 

 

print(add1(12))

print(add2(12))

結果都是輸出3 

 

三、map操作

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

# lambda 可以用於定義一些邏輯簡單的函數

add1 = lambda m, n: m + n

 

 

# 上面的lambda 等效於下面這個

def add2(a, b):

    return + b

 

 

map_result = map(add1, [12], [67])

print(list(map_result))

 

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

print(list(map_result))

輸出:

1

2

[79]

[7]

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

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

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

作者:菩提樹下的楊過
出處:http://yjmyzz.cnblogs.com
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章