• 【廖雪峰老师python教程】——filter/sorted


    filter


    Python内建的filter()函数用于过滤序列。

    map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素

    注意到filter()函数返回的是一个Iterator,也就是一个惰性序列,所以要强迫filter()完成计算结果,需要用list()函数获得所有结果并返回list。

    看看素数构造的过程:

    # 用生成器产生一个奇数序列——无穷数列
    def odd():
        n = 3
        while True:
            yield n
            n = n + 2
    
    # 筛选函数函数
    def is_divide(n):
        return lambda x:x%n > 0   
    
    # 利用筛选器构造筛选函数——函数结果为素数序列
    def primes():
        yield 2
        it = odd()
        while True:
            n = next(it)
            yield n
            it = filter(is_divide(n),it)
    # 素数序列打印 for i in primes(): if(i < 100): print(i) else: break # 由于primes是无穷数列,记得加上else break 作为终止条件。
    • 这里的筛选函数,lambda方法记一记,直接将it转化为lambda中的参数

    sorted


    • Python内置的sorted()函数可以对list进行排序
    • sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序
    • 要进行反向排序,不必改动key函数,可以传入第三个参数reverse=True
    # 姓名成绩序列
    L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
    
    # key函数定义
    def name(s):
        return s[0]
    def score(s):
        return s[1]
    
    # 排序[取L中的元素针对key函数方法的返回结果进行排序——>还原]
    print(sorted(L,key=name))
    print(sorted(L,key=score))



  • 相关阅读:
    设计模式之——工厂模式
    设计模式之——单例模式
    jQuery 全选 正反选
    将本地jar包添加到maven中
    配置项目启动的时候就加载 servlet
    Cannot call sendError() after the response has been committed(filter问题)
    mybatis pagehelper实现分页
    防止表单重复提交
    java.lang.Exception: No runnable methods 解决方案
    js 倒计时跳转页面
  • 原文地址:https://www.cnblogs.com/ChaoyuanJam/p/9739336.html
Copyright © 2020-2023  润新知