python 学习 --- 常用高阶函数

发布于 更新于
本文目录
  1. zip函数
  2. enumerate(iterable, start=0)
  3. lambda
  4. map
  5. filter
  6. reduce

技术文章测试开发

常用高阶函数

常用高阶函数

  • 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

来源:testingpai

继续阅读