• Python内置函数和高阶函数(map,filter,reduce, sorted,enumerate, zip,单行条件语句 )


    1. map 的用法:

    map()函数接收两个参数,一个是函数,一个是序列。
    map将传入的函数依次作用到序列的每个元素,并把结果作为新的对象返回,返回值是一个可迭代对象,可以用list()方法将其转为一个列表。

    def f(x):
        return x*x
    print(list(map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])))
    
    输出:[1, 4, 9, 16, 25, 36, 49, 64, 81]
    

    2.filter的用法

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

    def f(x):
        return x%2 == 1
    print(list(filter(f, [1, 2, 3, 4, 5, 6, 7])))
    
    输出:[1, 3, 5, 7]
    

    3. reduce的用法

    reduce把一个函数作用在一个序列[x1, x2, x3…]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算
    reduce函数不是内置函数,而是在模块functools中的函数,故需要导入。但用处很多

    from functools import reduce
    
    def add(x, y):
        return x + y
    print(reduce(add, [1, 3, 5, 7, 9]))
    
    输出:25
    
    # 将[1, 3, 4, 6, 7, 1, 0]生成1346710
    def fn(x, y):
        return x * 10 + y
    print(reduce(fn, [1, 3, 4, 6, 7, 1, 0]))
    
    输出: 1346710
    
    # 字符串转数字
    def fn(x, y):
        return x * 10 + y
    
    def f(x):
        return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[x]
    # reduce和map一起用
    print(reduce(fn, map(f, '135874')))
    
    输出:135874 
    

    4. sorted 的用法

    sorted()函数也是一个高阶函数,它还可以接收一个比较函数来实现自定义的排序。
    语法: sorted(iterable, cmp=None, key=None, reverse=False)
    cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
    key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
    reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

    print(sorted([9, 23, 5, 34, 10], reverse=False))
    
    输出: [5, 9, 10, 23, 34]
    

    5. enumerate的用法

    如果你需要遍历可迭代的对象,又需要获取它的下标,可以用enumerate

    a = ['a', 'b', 'c', 'd']
    
    for idx, value in enumerate(a):
        print(idx, value)
    
    输出:
    0 a
    1 b
    2 c
    3 d
    

    6. zip的用法

    zip接收多个迭代器参数,取相同下标的元素组合成一个新的迭代器;
    zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。

    b = ['a', 'b', 'c', 'd']
    c = ['e', 'f','g']
    d = ['h', 'i', 'j', 'k']
    for i in zip(b, c, d):
        print(i)
    
    输出:
    ('a', 'e', 'h')
    ('b', 'f', 'i')
    ('c', 'g', 'j')
    
    print(list(zip(b, c, d)))
    输出:
    [('a', 'e', 'h'), ('b', 'f', 'i'), ('c', 'g', 'j')]
    
    

    7. 单行条件语句

    如果我们使用条件语句,那么最可能写成下面这个样子:

    x = int(input())
    if x >= 10:
        print("Horse")
    elif 1 < x < 10:
        print("Duck")
    else:
        print("Baguette")
    

    但其实我们也可以把所有条件都写在 print 函数内,即上面 7 行代码可以等价写成如下一行:

    print("Horse" if x >= 10 else "Duck" if 1 < x < 10 else "Baguette")
    
  • 相关阅读:
    Xamarin.Android开发实践(十八)
    Xamarin.Android开发实践(十七)
    smokeping网络监控
    Cobbler自动化部署
    在线编辑器KindEditor的使用
    前端之快速创建标签
    Tornado之自定义异步非阻塞的服务器和客户端
    算法基础知识之树、二叉树
    Tornado之实例和扩展
    Scrapy源码研究前戏
  • 原文地址:https://www.cnblogs.com/pyweb/p/13161871.html
Copyright © 2020-2023  润新知