• map()和filter()函数讲解与示例


    1.map(function,iterable):会根据提供的函数对指定序列做映射。第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

    示例1
    lst = [1,2,3,4,5]
    result = map(lambda x : x**2 ,lst)
    print(type(result))
    print(result)
    print(list(result))
      
    #输出 <class 'map'>
    #输出 <map object at 0x000001DFFA442470>
    #输出 [1,4,9,16,25]
     
    示例2:
    #假设用户输入的英文名字不规范,没有按照首字母大写,后续字母小写的规则,请利用map()函数,把一个list(包含若干不规范的英文名字)变成一个包含规范英文名字的list:

    def f(s):
      return s[0:1].upper() + s[1:].lower()

    lst = ['lll', 'lKK', 'wXy']

    ret = map(f, lst)

    print(type(ret))

    print(ret)

    print(list(ret))

    输出结果:

    # <class 'map'>

    # <map object at 0x0000000005EE2E48>

    # ['Lll', 'Lkk', 'Wxy'] 

    示例3:

    #如下列表,每个小字典的name对应股票名字,shares对应多少股,price对应股票的价格

    portfolio = [ {'name': 'IBM', 'shares': 100, 'price': 91.1}, {'name': 'AAPL', 'shares': 50, 'price': 543.22}, {'name': 'FB', 'shares': 200, 'price': 21.09}, {'name': 'HPQ', 'shares': 35, 'price': 31.75}, {'name': 'YHOO', 'shares': 45, 'price': 16.35}, {'name': 'ACME', 'shares': 75, 'price': 115.65} ]

    1、通过map和lambda函数配合计算出,购买的每只股票的总价,此处使用了round()函数用来保证小数的精确位数

    ret = map(lambda dic:{dic["name"]:round(dic["shares"]*dic["price"],2)},portfolio)

    print(list(ret))

    输出结果:

    [{'IBM': 9110.0}, {'AAPL': 27161.0}, {'FB': 4218.0}, {'HPQ': 1111.25}, {'YHOO': 735.75}, {'ACME': 8673.75}]

    2、用filter过滤出,单价大于100的股票有哪些

    ret = filter(lambda dic:dic["price"]>100,portfolio) print(list(ret))

    print(list(ret))

    输出结果:

    [{'name': 'AAPL', 'shares': 50, 'price': 543.22}, {'name': 'ACME', 'shares': 75, 'price':115.65}]

    2.filter(function,iterable):筛选函数;函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

    def func(x):
        return % 2 == 0
    req = filter(func,range(10))
    print(req)
     
    #输出 [2,4,6,8]
  • 相关阅读:
    生成不带签名(BOM)的UTF8格式的XML
    矢量数据的裁剪及合并
    使用dotNET_Reactor4.7加密后的dll在VS2010中无法打包
    加密后的程序在Win8中无法运行
    修改jpg的图片大小
    shapefile中dbf的数据格式(转载)
    shapefile 输出的地理处理注意事项(转载)
    linxu下面的绝对路径和相对路径
    go中的类型转换成interface之后如何复原
    使用docker部署一个go应用
  • 原文地址:https://www.cnblogs.com/rubickcn/p/13521188.html
Copyright © 2020-2023  润新知