美文网首页Python中文社区Python 指南Python 运维
说说那些我也不太懂的 Python 高阶函数

说说那些我也不太懂的 Python 高阶函数

作者: 谢烟客 | 来源:发表于2017-02-04 14:28 被阅读137次

    map(func, list):

    map 本身接收 2 个参数:一个函数、一个列表, 将 func 作用在 list 中的每一个元素上并返回一个新的 list

    **eg: **我们要将公司每个人的薪水提高 40% 并打印出来,就可以这样完成

    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    
    bob = ['Bob Smith', 42, 3000, 'software']
    sue = ['Sue Jones', 45, 4000, 'hardware']
    
    employee = [bob,sue]
    
    def payRaise(salary):
        salary *= 1.4
        return salary
    
    print(list(map(payRaise, [e[2] for e in employee]))) # 这里用到了列表解析器
    
    # 打印结果为:[4200.0, 5600.0]
    

    reduce(func, list):

    reduce 本身接收 2 个参数:一个函数、一个列表,与 map 不同之处在于 map 接收的函数只能接收一个参数,而 reduce 接收的函数只能接收2个参数,reduce 依次反复对 list 中每一个元素进行 func 操作,并将最终结果返回

    eg: 我们要将一个列表中所有的数求和,就可以这样完成

    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    from functools import reduce 
    # 在 Python 3 里,reduce()函数已经被从全局名字空间里移除了,它现在被放置在 fucntools 模块里,用的话要先导入
    
    score = [1,2,3,4,5,6,7]
    
    def mySum(a, b):
        return a + b
    
    print(reduce(mySum, score))
    
    # 打印结果为:28
    

    filter(func, list):

    filter 本身也接受2个参数:一个函数,一个列表, 将 func 作用在 list 中的每一个元素上进行判断,将判断结果为 True 的元素返回,并生成一个生成器对象

    eg: 我们要得到 1-100 里面所有的奇数,就可以这样完成

    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    
    def is_odd(x):
        return x % 2 != 0 
    
    all_num = range(1,101) # python 3 中 range 函数返回生成器对象
    odd_generator = filter(is_odd, list(all_num)) # filter 函数然会生成器对象
    print(list(odd_generator)) # 打印列表
    
    # 打印结果为:1-100 所有奇数
    

    • 交流可以加 QQ 群:397234385
    • 或者 QQ 扫码入群:
    qq群.jpg

    相关文章

      网友评论

        本文标题:说说那些我也不太懂的 Python 高阶函数

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