美文网首页
lambda map filter reduce zip 以及列

lambda map filter reduce zip 以及列

作者: 凉茶半盏 | 来源:发表于2017-09-20 12:09 被阅读50次

    最近比较忙, 好久没写博客了, 现在起, 坚决跟上. 这次简单记录python中的常用特殊技巧方法.


    lambda匿名函数篇

    lambda c: c>10
    def func(c): return c > 10
    
    (lambda *argv: [item for item in argv])(1,2,3,4,5)
    (lambda **kargv:[item for item in kargv.items()])(a=1,b=2,c=3)
    
    • 这里使用lambda表达式声明的匿名函数, 和常规的def声明函数具有同样的效果.
    • lambda多用于函数体简单以及该函数不会被重复调用多次的情况
    • lambda可以接受多个参数, 不定参数以及键值对

    map(func, iter)函数篇

    map(ord, '!@#$%^&*()_+')
    
    • map函数接受一个函数名func以及一个迭代器iter
    • map函数将iter中的元素依次传入func中执行, 并返回func执行后的结果组成的结果集, 该结果集是一个map类型的迭代器
    • map函数也可以接受lambda函数做参数

    filter(func,iter) 函数篇

    filter(lambda x: x > 64, map(ord, '!@#$%^&*()_+'))
    
    • filter函数接受参数同map函数
    • 不同的是, 此处的func用于过滤iter中的内容, 而map中的函数用于对iter中元素做同一处理
    • 返回一个filter类型的迭代器

    reduce(func, iter)函数篇

    from functools import reduce
    reduce(lambda sum_res, next_res: sum_res + next_res, range(10))
    
    • python3reduce被移到functools
    • reduce可接受的参数同map函数一样, 不同的是前者接受的func必须可以接受两个参数, 第一个参数会自动传入当前iter的元素结果集, 第二个参数会自动传入iter的下一个元素. 最后返回iter中每个元素按照func规则作用之后的结果
    • 该函数多用于求和差积除之类的操作

    zip(iter01.iter02)函数篇

    zip(['a', 'b', 'c', 'd'], {1,2,3})
    
    zip(*zip(['a', 'b', 'c', 'd'], {1, 2, 3}))
    
    • zip接受多个iter, 并将iter按照最少元素的那个对应打包成元组, 返回一个zip类型的迭代器, 该迭代器中的元素为前边打包完成的元组
    • zip也支持解包操作, 将打包的迭代器拆分成多个元组

    列表推导篇

    [i for i in range(10)]
    {i:i for i in range(10)}
    {i for i in range(10)}
    
    colors=['black','whiite']
    sizes={'S','M','L'}
    [(color,size) for color in colors for size in sizes]
    
    • 列表推导, 可用于快速生成可读性高的列表, 字典以及集合
    • 一次性生成多个元素的列表, 字典或者集合类型
    • 便捷的生成笛卡尔积

    生成器表达式篇

    (i for i in range(20))
    
    tuple(i for i in range(20))
    list(i for i in range(20))
    
    • 生成器表达式语法和列表推导类似, 只是将方括号变为圆括号
    • 生成器表达式可以逐个产出元素, 而不是先建立一个完整的列表再把该列表传递到某个构造函数中去
    • 生成器表达式仅仅在for循环时候才生成组合, 可以减少for循环的开销

    相关文章

      网友评论

          本文标题:lambda map filter reduce zip 以及列

          本文链接:https://www.haomeiwen.com/subject/fcbnsxtx.html