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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

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