zoukankan      html  css  js  c++  java
  • Python 内置函数 zip(), sorted(), filter()和map()

    内置函数
    1. zip() 打包(木桶效应)
    描述: zip() 函数用于将可迭代的对象作为参数, 将对象中对应的元素打包成一个个元组, 然后返回由这些元组组成的列表
    语法: zip([iterable, ...])
    参数: iterable -- 一个或多个迭代器
    返回值: 返回可迭代对象
    # 实例:
    lst1 = ["中国", "美国", "俄罗斯", "日本"]
    lst2 = ["北京", "华盛顿", "莫斯科"]
    lst3 = ["烤鸭", "炸鸡", "黄油+面包", "寿司"]
    lst = zip(lst1, lst2, lst3) # 合并列表, 返回可迭代对象, 水桶效应
    print(lst)
    print(list(lst))
    print("__iter__" in dir(lst))
    输出结果:
    <zip object at 0x0000005E0A4DCEC8>
    [('中国', '北京', '烤鸭'), ('美国', '华盛顿', '炸鸡'), ('俄罗斯', '莫斯科', '黄油+面包')]
    True

    需要注意的是:
    (1)zip()函数具有水桶效应
    (2)zip()函数返回的是一个迭代器, 直接打印zip()函数的结果是一个内存地址


    2. sorted() 排序
    执行流程: 把可迭代对象iterable中的每一个元素拿出来, 放到func中运行, 返回一个数字, 根据数字进行排序
    描述: sorted() 函数对所有可迭代的对象进行排序操作
    语法: sorted(iterable, key=func, reverse=True/False)
    参数说明: iterable -- 可迭代对象
    func -- 排序规则
    reverse=True表示降序排列, reverse=False表示升序排列
    返回值: 返回排序后的列表

    实例1:
    lst = ["王乃卉", "刘能", "赵四", "王大拿", "范伟", "沈腾"]
    lst1 = sorted(lst, key=lambda name: len(name) % 3)
    print(lst1)
    输出结果:
    ['王乃卉', '王大拿', '刘能', '赵四', '范伟', '沈腾']

    实例2:按照年龄对学⽣信息进行排序
    lst = [
        {"id": 1, "name": 'alex', "age": 18},
        {"id": 2, "name": 'wusir', "age": 16},
        {"id": 3, "name": 'taibai', "age": 17},
    ]
    
    l2 = sorted(lst, key=func)
    print(l2)
    l3 = sorted(lst, key=lambda dic: dic['age'])
    l4 = sorted(lst, key=lambda dic: len(dic['name']))
    l5 = sorted(lst, key=lambda dic: ascii(dic['name'][0]))
    print(l5)
    sorted()函数最大的优点是可以按照自己的规则(自己定义的函数)来排序


    3. filter() 筛选
    执行流程: 把可迭代对象中的每一个元素拿出来, 放到func中运行, 返回True或False, 根据返回的True和False来决定这个元素是否保留
    描述: filter() 函数用于过滤序列, 过滤掉不符合条件的元素, 返回由符合条件的元素组成的迭代器
    语法: filter(function, iterable)
    参数: function -- 判断函数
    iterable -- 可迭代对象
    返回值: 返回迭代器
    注意: filter()的作用是筛选,所以function的功能是判断

    实例:
    (本题会用到lambda匿名函数, 如果不了解请点击这里)
    lst = [23, 28, 15, 27, 24, 22]
    f = filter(lambda age: age > 18 and age % 2 == 0, lst)
    print(list(f))      # 要把返回的迭代器转换成列表才能打印出来


    4. map() 映射
    执行流程: 把可迭代对象中的每一个元素拿出来, 放到func中运行, 返回数据就是结果
    描述: map()会根据提供的函数对指定序列做映射
    语法: map(function, iterable, ...)
    参数: function -- 函数
    iterable -- 一个或多个序列
    返回值: 返回迭代器
    注意: map()的作用是映射,所以function的功能是作为对应法则输出目标值

    实例1:
    lst = [1,5,9,3]
    m = map(lambda x: x**2, lst)
    print(list(m))
    输出结果:
    [1, 25, 81, 9]

    实例2:计算两个列表相同位置的数据的和
    lst1 = [1, 2, 3, 4, 5]
    lst2 = [2, 4, 6, 8, 10]
    print(list(map(lambda x, y: x + y , lst1, lst2)))
    输出结果:
    [3, 6, 9, 12, 15]
  • 相关阅读:
    promise
    ES6中的类
    css基础知识
    ES6数据解构:set map 的介绍
    ES6对象的拓展
    ES6函数的拓展
    ES6数组的拓展
    ES6字符串和数值的扩展
    webpack的三种运行方式
    Mysql数据增删改操作以及复制表小技巧
  • 原文地址:https://www.cnblogs.com/haitaoli/p/9692762.html
Copyright © 2011-2022 走看看