zoukankan      html  css  js  c++  java
  • 内置函数map, reduce, filter 的使用

    内置函数map, reduce, filter 的使用方法类似,均为:第一个输入参数是函数,第二参数时sequence。

    map

     对sequence的item 依次执行 函数。此处的函数可以是函数,自定义函数,匿名函数lambda。

    • 基本使用方法: map(function, sequence)
    • 使用中需要注意的是,在python2.7中,执行上述代码便可以直接显示结果,但在python3下,返回的结果需要重置类型,比如list,才能打印输出。
     1 """依次执行"""
     2 # map(str, range(5))   python 2.7下,这样就能直接显示结果,但在python 3下,这样显示不出结果也不能调用。
     3 # 需要:list一下
     4 ls = map(str, range(5))
     5 rs = list(ls)
     6 print(rs)
     7 # 匿名函数
     8 rs1 = list(map(lambda x: x+1, range(5)))
     9 print(rs1)
    10 # 自定义函数
    11 def func(x):
    12     return x**2
    13 rs2 = list(map(func, range(8)))
    14 print(rs2)
    15 
    16 # 对于多参数,可以使用多参数的函数
    17 def func1(x,y):
    18     return x+y
    19 rs3 = list(map(func1,"fabi","dais"))
    20 print(rs3)

    执行上述代码,例如第四行,map的作用就是使range(5)的数依次执行 str 的方法,返回的结果自然是["0","1","2","3","4"]。

    整理一些遇到的map使用:

    1 self.colors = list(
    2             map(lambda x: (int(x[0] * 255), int(x[1] * 255), int(x[2] * 255)),
    3                 self.colors))
    1 self.colors = list(map(lambda x: colorsys.hsv_to_rgb(*x), hsv_tuples))

    reduce

     对sequence的item 迭代执行 函数。

    • 基本使用方法:reduce(function,sequence)
    • 使用中需要注意的是,在python3中,reduce已经从内置函数中移除,放置在functools模块中。
    • 如果输入三个参数,则第三个参数为初始参数,也就是说,会在迭代过程中多一次第三个参数的运算。
    • 可以直接生成返回值。
    1 """迭代执行"""
    2 from functools import reduce
    3 print(reduce(func1, range(10)))    # 做的是一个连加的运算
    4 
    5 print(reduce(lambda x,y:x*y, [1,2,3],2))   # 如果是三个参数,可以在原来运算的基础上,多一个第三个参数的运算

    filter

     对sequence的item 依次执行 函数,返回为True( != 0)的item组合。

    • 基本使用方法: filter(function, sequence)
    • 和map一样,返回的结果需要重置类型。
    1 def func2(x):
    2     return x%2
    3 print(set(filter(func2, range(4))))

    返回值为{1,3}。

  • 相关阅读:
    Delphi播放铃声
    小技巧
    Delphi线程中使用waitfor返回值
    window安装、启动consul
    kali2020-bash: openvas-setup:未找到命令 ,解决办法
    zookeeper 客户端
    redis 集群
    activeMQ
    Shiro
    Eclipse Java注释模板设置详解
  • 原文地址:https://www.cnblogs.com/monologuesmw/p/9555809.html
Copyright © 2011-2022 走看看