zoukankan      html  css  js  c++  java
  • 【廖雪峰老师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))



  • 相关阅读:
    Mybatis如何插入空字段
    为什么要将action实例设置为多例
    hibernate dynamic-update="true"属性不起作用原因(转载)
    查找到匹配的进程并关闭 linux ps -ef
    Mac 下解决修改IntelliJ IDEA 由于修改配置之后无法启动问题
    再聊移动端页面的适配
    重学前端
    前端面试
    使用Flexible实现手淘H5页面的终端适配
    vue-cli3.0 使用px2rem 或 postcss-plugin-px2rem
  • 原文地址:https://www.cnblogs.com/ChaoyuanJam/p/9739336.html
Copyright © 2011-2022 走看看