Python中的map函数,lambda表达式,filter函数的用法

map函数  

map()函数语法: map(function,iterable)     

  • function 是函数
  • iterable  一个或者多个序列

接受一个函数和一个list,并通过把函数依次作用在list每个元素上,得到一个新的list并返回

处理序列中的每个元素,得到的结果是一个“列表”,该“列表”元素个数及位置与原来一样

复制代码
# 打印列表中所有数字的平方形式
# 用for循环形式做:
# #[1,2,3,4,5,6]      # 1. 先写出一个列表
# yi=[1,2,3,4,5,6]    # 2. 给原始列表赋值yi
# res=[]              # 3. 给假设的平方列表赋值,便于打印
# for i in yi:   # 此处i表示列表中的数值
#     res.append(i**2)
# print(res)
#
# # 用map函数的方式做
# yi=[1,2,3,4,6]
# def map_test(shuzi):   # num_01映射  shuzi 是接受列表的形式,是参数
#     ko=[]
#     for i in yi:
#         ko.append(i**2)
#     return ko     #完成某一个功能(该例子为列表的平方)逻辑封装到函数里面
# ret=map_test(yi)    # 将yi传进num_01里面 ,赋值给ret
# print(ret)
复制代码

lambda函数

  • 用lambda声明一个匿名函数,是指没有声明函数名称的函数
  • lambda是为了减少单行函数的定义而存在的
  • lambda函数可以接受任意数量的参数,但函数只能包含一个表达式
    lambda  x,y:x*y 
    # x,y 是参数,x*y是lambda是函数,是表达式,用来计算后返回结果,将参数传入
  1.     将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数
  2.     将lambda函数赋值给其他函数,从而将其他函数用该lambda函数替换
  3.     将lambda函数作为其他函数的返回值,返回给调用者
  4.     将lambda函数作为参数传递给其他函数
    复制代码
    movie_people=['zhangsan','lisi','wangwu','sb01','sb_02','03_sb']
    def sb_show(n):
       return n.endswith('sb')  #直接可以写成lambda形式
     ------> lambda n:n.
    
    def fii_test(func,xx):
         ret=[]
         for i in movie_people:
             if not func(i):
                 ret.append(i)
         return ret
     res=fii_test(lambda n:n.endswith('sb'),movie_people)
     print(res)
    复制代码

filter函数 

filter()函数语法: filter(函数,序列)     

  • 函数和序列均为参数,序列的每个元素作为参数传递给函数进行判断,然后返回True或者False,最后将返回True的元素放到新列表/迭代器中
  • 过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表
  • 遍历序列中的每个元素,判断每个元素得到布尔值,如果是True则保留
    复制代码
    从看电影的人当中过滤掉所有sb,不分前后
    movie_people=['zhangsan','lisi','wangwu','sb01','sb_02','03_sb']
    def sb_show(n):
        return n.endswith('sb')
    
    def fii_test(func,xx):
        ret=[]
        for i in movie_people:
            if not func(i):
                ret.append(i)
        return ret
    res=fii_test(sb_show,movie_people)
    print(res)
    
    使用lambda进行匿名函数处理:
    movie_people=['zhangsan','lisi','wangwu','sb01','sb_02','03_sb']
    def sb_show(n):
        return n.endswith('sb')  #直接可以写成lambda形式
    # ------> lambda n:n.
    
    def fii_test(func,xx):
        ret=[]
        for i in movie_people:
            if not func(i):
                ret.append(i)
        return ret
    res=fii_test(lambda n:n.endswith('sb'),movie_people)
    print(res)
    
    filter函数处理:
    movie_people=['zhangsan','lisi','wangwu','sb01','sb_02','03_sb']
    res=filter(lambda n:n.endswith('sb'),movie_people)
     ----> lambda n:n.endswith('sb') 函数是参数;movie_people是可迭代对象,对可迭代对象依次进行for循环遍历,bool值等于True,值保留
    print(res)
    print(list(res))
    复制代码

     

reduce函数

处理一个序列,然后把序列进行合并操作

 

posted @   山高水远weinierlai  阅读(183)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示