map,zip,reduce,lambda函数学习笔记

来源:互联网 发布:开发一个软件 编辑:程序博客网 时间:2024/05/16 10:38
上面4个函数,虽然都知道具体的含义,但是有时候很少会想起来用这几个函数。用的恰到好处的话,确实使代码看起来更简洁易懂。 如果有个列表字典dic1 = [{'a':'A'},{'b':'B'},{'d':'D'},{'c':'C'}]想要把这个列表中的字典全部合并的话,可以用以下代码实现
b = dic1[0]for i in range(1,4):    b = dict(b,**dic1[i])----------------------------------如果用reduce,map和lambda函数结合就更简洁了dic = {}for i in map(lambda x:dic.update(x),dic1):    print(dic)out:{'a': 'A'}{'a': 'A', 'b': 'B'}{'a': 'A', 'b': 'B', 'd': 'D'}{'a': 'A', 'b': 'B', 'd': 'D', 'c': 'C'}如果用reduce就更加简洁,dic = OrderedDict()    #如果你想要输出是输入的顺序,字典是无序的,虽然上面的没有有序字典看似也是有序,但是我用不同的ide结果就是不同reduce(lambda x,y:dic.update(y),dic1,{})   #from functools import reduceout :dic = {'a': 'A', 'b': 'B', 'd': 'D', 'c': 'C'}
map(lambda x:dic.update(x),dic1)reduce和map函数接收的参数比较相似,接收一个函数和一个列表(reduce可以有第3个参数作为计算的初始的值,如果没有,就以list中的中的第一个元素作为x)。下面把reduce拆解就能明白了。reduce(lambda x,y:dic.update(y),dic1,{})==>lambda x,y:dic.update(y)  其实就等于def fun(x,y):    return dic.update(y),x所以,第一步执行x = {},y = dic1[0]代入到 fun({},dic1[0]) ,dic 就变成 {'a': 'A'},然后在fun(fun({},dic1[0]),dic1[1]),一直计算到最后一个#reduce( func, [1, 2,3] ) = func( func(1, 2), 3)

zip函数一般将2个列表合并
for i in zip([1,2,3],[4,5]):
print(i)
out:
(1, 4)
(2, 5)

0 0
原创粉丝点击