python 常用高阶函数

python常用高阶函数

常用高阶函数

  • zip函数
    • zip压缩:将多个可迭代对象对应索引的值组成一个元素,以最短的元素为准
    • zip解压:压缩的反向过程
    • 代码演示
      list2=[1,2,3]
      list3=[4,5,6,7]
      result=list(zip(list2,list3))
      print(result)
      输出: [(1, 4), (2, 5), (3, 6)]
      print(list(zip(*result)))
      输出: [(1, 2, 3), (4, 5, 6)]
    
  • enumerate(iterable, start=0)
    • 作用:获取元素以及元素对应的索引位置
    • enumerate()函数返回的是一个可迭代对象,需要另外获取值
    • 参数
      • iterable:字符串、列表、元组
      • start:索引起始值是指函数生成的对应元素下表的起始值,并不是原列表的索引值
    • 返回值
      • list
        start参数默认从0开始
        test_list = ['a', 'b', 'c']
        result = list(enumerate(test_list))
        print(result)
        输出:[(0, 'a'), (1, 'b'), (2, 'c')]
    

    指定start参数

    test_list = ['a', 'b', 'c']
    result = list(enumerate(test_list,2))
    print(result)
    输出:[(2, 'a'), (3, 'b'), (4, 'c')]
    
    tuple:处理方式同list
    set:处理方式同list
    
    for循环遍历
    test_list = ['a', 'b', 'c']
    result = list(enumerate(test_list,2))
    for k in result:
    print(k,end='')
    print('')
    for k,v in result:
    print('结果为:{} {}  '.format(k,v),end='')
    输出:
    (2, 'a')(3, 'b')(4, 'c')
    结果为:2a  结果为:3b  结果为:4c
    
  • lambda
    • 特点
      • 无需起名字
      • 实现简单功能,一行代码就能实现
    • 调用的时候传入参数个数为lambda后面冒号左边的参数个数,参数也是由它们接收

    result=lambda x,y:x**y
    print(result(2,3))
    输出:8

  • map
    • 遍历序列,对序列中每个元素进行操作,最终获取新的序列

    • 参数

      • func:接收一个函数
      • Iter :接收一个可迭代对象,可迭代对象个数与函数参数一致
    • 代码演示
      使用场景:两个列表对应索引位置求和
      第一种写法

      def test_demo(x,y):
      return x+y
      res=map(test_demo,[1,2,3], [1,2,3])
      print(list(res))
      输出:[2, 4, 6]
      

      结合lambda函数

      print (map(lambda x, y : x +  y, range(1,4), range(1,4))
      输出:[2, 4, 6]
      
  • filter
    • 作用:‘筛选函数’,filter()把传人的函数依次作用于序列的每个元素,然后根据返回值是True还是false决定保留还是丢弃该元素,返回符合条件的序列

    • 参数

      • function:接收一个函数
      • iterable:接收一个可迭代对象
    • 代码演示

      使用场景:筛选出10以内的偶数

      第一种写法
      def test_demo(x):
      return x % 2 == 0
      res2=filter(test_demo,[1,2,3,4,5,6,7,8,9])
      print(list(res2))
      输出:[2, 4, 6, 8]
      

      结合lambda函数

      res3=filter(lambda x : x%2==0,range(1,10))
      print(list(res3))
      输出:[2, 4, 6, 8]
      
  • reduce
    • 作用:对于序列内所有元素进行累计操作,即是序列中后面的元素与前面的元素做累积计算

    • 参数

      • function:接收一个参数
      • 22
    • 代码演示

      使用场景:1-5求和
      第一种写法
      
      from functools import reduce
      def test_demo(x,y):
      return x + y
      res=reduce(test_demo,[1,2,3,4,5])
      print(res)
      输出:15
      

      结合lambda函数

      from functools import reduce
      res=reduce(lambda x,y:x+y,range(6))
      print(res)
      输出:15
      

      ps:一起学习,一起成长,有问题私信我

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值