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))



  • 相关阅读:
    SSM框架整合步骤
    Spring-data-jpa
    allure定制报告
    pytest常用选项
    staticmethod&classmethod&property
    __slot__
    python的参数传递
    闭包和装饰器
    内置高阶函数
    str
  • 原文地址:https://www.cnblogs.com/ChaoyuanJam/p/9739336.html
Copyright © 2011-2022 走看看