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])
这样呢?答案仍然是木桶原理,大家可以自己去验证。