• Python重要知识点filter_map_partial_reduce_sorted内置函数的使用方法



    前言

    在很多深度学习项目中,python知识点中,关于filter() map() partial() reduce() sorted()的使用很常见,所以在此对python的这些知识点做一温故并总结。


    提示:以下是本篇文章正文内容,下面案例可供参考

    一、filter()函数

    filter的含义是“过滤”的意思,顾名思义,该函数的功能就是用于过滤。如一个序列,通过条件判断,过滤掉不符合要求的元素,最终返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中

    1.语法

    filter(function, iterable)	
    #function 为函数,属于判断条件
    #iterable 为可迭代对象,也就是迭代器对象。
    
    • 1
    • 2
    • 3

    返回值即为迭代器对象。

    2.实例展示

    def is_odd(n):
        return n % 2 == 1
    L = range(100)
    #通过list来把迭代器对象转换成列表
    print(list(filter(is_odd, L)))
    
    def not_empty(s):
        return s and s.strip()
    print(list(filter(not_empty, ['A', '', 'B', None, 'C', '  '])))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    二、map()函数

    map()中第一个参数为function函数,与filter()一样,后面参数传来的序列元素会传进第一个function中做运算,每个元素运算的结果作为返回新的迭代器中的元素。

    1.语法

    代码如下(示例):

    map(function, iterable, ...)
    
    
    • 1
    • 2

    #function – 函数
    #iterable – 一个或多个序列

    2.实例展示

    代码如下(示例):

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
    def f(x):
        return x * x
    
    print(list(map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    三、partial()偏函数

    函数在执行时,要带上所有必要的参数进行调用。但是,有时参数可以在函数被调用之前提前获知。这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调用。

    偏函数是将所要承载的函数作为partial()函数的第一个参数,原函数的各个参数依次作为partial()函数后续的参数,除非使用关键字参数。
    通过语言描述可能无法理解偏函数是怎么使用的,那么就举一个常见的例子来说明。在这个例子里,我们实现了一个取余函数,对于整数 100,取得对于不同数 m 的 100%m 的余数。

    1.实例展示

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
    import functools
    int2 = functools.partial(int, base=2)
    
    print('1000000 =', int2('1000000'))
    print('1010101 =', int2('1010101'))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    四、reduce()函数

    reduce() 函数会对参数序列中元素进行累积。
    函数将一个数据集合中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

    1.语法

    from functools import reduce	
    reduce(function, iterable[, initializer])
    #function -- 函数,有两个参数
    #iterable -- 可迭代对象
    #initializer -- 可选,初始参数
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.实例展示

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
    from functools import reduce
    
    CHAR_TO_INT = {
        '0': 0,
        '1': 1,
        '2': 2,
        '3': 3,
        '4': 4,
        '5': 5,
        '6': 6,
        '7': 7,
        '8': 8,
        '9': 9
    }
    
    def str2int(s):
        ints = map(lambda ch: CHAR_TO_INT[ch], s)
        return reduce(lambda x, y: x * 10 + y, ints)
    
    print(str2int('0'))
    print(str2int('12300'))
    print(str2int('0012345'))
    
    CHAR_TO_FLOAT = {
        '0': 0,
        '1': 1,
        '2': 2,
        '3': 3,
        '4': 4,
        '5': 5,
        '6': 6,
        '7': 7,
        '8': 8,
        '9': 9,
        '.': -1
    }
    
    def str2float(s):
        nums = map(lambda ch: CHAR_TO_FLOAT[ch], s)
        point = 0
        def to_float(f, n):
            nonlocal point
            if n == -1:
                point = 1
                return f
            if point == 0:
                return f * 10 + n
            else:
                point = point * 10
                return f + n / point
        return reduce(to_float, nums, 0.0)
    
    print(str2float('0'))
    print(str2float('123.456'))
    print(str2float('123.45600'))
    print(str2float('0.1234'))
    print(str2float('.1234'))
    print(str2float('120.0034'))
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62

    五、sorted()函数

    sorted() 函数对所有可迭代的对象进行排序操作。sort 与 sorted 区别:
    sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作

    list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

    1、语法

    sorted(iterable, cmp=None, key=None, reverse=False)
    #iterable -- 可迭代对象。
    #cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返#回1,小于则返回-1,等于则返回0。
    #key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象#中的一个元素来进行排序。
    #reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.实例展示

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
    from operator import itemgetter
    
    L = ['bob', 'about', 'Zoo', 'Credit']
    
    print(sorted(L))
    print(sorted(L, key=str.lower))
    
    students = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
    
    print(sorted(students, key=itemgetter(0)))
    print(sorted(students, key=lambda t: t[1]))
    print(sorted(students, key=itemgetter(1), reverse=True))
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    总结

    以上就是今天要讲的内容,大概记录了filter()map() reduce() sorted()函数的语法及用法,并提供了简单容易理解的例子供参考,后续会不定期更新记录学习知识点。

  • 相关阅读:
    计算机毕业设计ssm基于协同过滤推荐算法的新闻推荐系统43149系统+程序+源码+lw+远程部署
    Leetcode LCR182:动态口令
    SEUSS:Skip Redundant Paths to Make Serverless Fast 阅读报告
    es5下载安装x-pack修改密码
    《LC刷题总结》——贪心
    番外篇 | 基于改进YOLOv5的安全帽佩戴检测 | 重参数化结构RepVGG + 空间对象注意力机制RCS-OSA模块
    使用python制作一个简单的任务管理器
    45从零开始用Rust编写nginx,静态文件服务器竟然还有这些细节
    刷题1:数组篇
    Spring Cloud Gateway 不小心换了个 Web 容器就不能用了,我 TM 人傻了
  • 原文地址:https://blog.csdn.net/DeepLearning_/article/details/127856944