zoukankan      html  css  js  c++  java
  • Python-高阶函数练习(filter,map,reduce)

    一:
    '''
    #用map来处理字符串列表啊,把列表中所有人都变成sb,比方alex_sb
    name=['lucy','lilei','hanmeimei']
    
    #用map来处理下述l,然后用list得到一个新的列表,列表中每个人的名字都是sb结尾
    l=[{'name':'lucy'},{'name':'y'}]
    
    '''
    name=['lucy','lilei','hanmeimei']
    print(list(map(lambda x:x+'_sb',name)))
    
    l=[{'name':'lucy'},{'name':'y'}]
    print(list(map(lambda x:x['name']+'_sb',l)))
    
    
    二:
    '''
    #用filter来处理,得到股票价格大于20的股票名字
    shares={
        'IBM':36.6,
        'Lenovo':23.2,
        'oldboy':21.2,
        'ocean':10.2,
    }
    '''
    shares = {
        'IBM': 36.6,
        'Lenovo': 23.2,
        'oldboy': 21.2,
        'ocean': 10.2,
    }
    # print(list(filter(lambda x: x > 20, shares.values())))
    
    print(list(filter(lambda k:shares[k]>20,shares)))
    
    
    
    
    三:
    '''
    #如下,每个小字典的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}
    ]
    
    '''
    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来得出一个包含数字的迭代器,数字指的是:购买每支股票的总价格
    
    print(list(map(lambda x: x['shares'] * x['price'], portfolio)))
    
    # 2:基于1的结果,用reduce来计算,购买这些股票总共花了多少钱
    # [9110.0, 27161.0, 4218.0, 1111.25, 735.7500000000001, 8673.75]
    
    from functools import reduce
    
    print(reduce(lambda x, y: x + y, list(map(lambda x: x['shares'] * x['price'], portfolio))))
    
    # 3:用filter过滤出,单价大于100的股票有哪些
    
    print(list(filter(lambda x:x['price']> 100,portfolio)))
    为什么要坚持,想一想当初!
  • 相关阅读:
    消息中间件(一)MQ详解及四大MQ比较
    SIP协议
    PAT (Basic Level) Practice 1008 数组元素循环右移问题
    LeetCode-Algorithms 1. 两数之和
    PAT (Basic Level) Practice 1040 有几个PAT
    PAT (Basic Level) Practice 1023 组个最小数
    PAT (Basic Level) Practice 1021 个位数统计
    PAT (Basic Level) Practice 1007 素数对猜想
    PAT (Basic Level) Practice 1006 换个格式输出整数
    PAT (Basic Level) Practice 1004 成绩排名
  • 原文地址:https://www.cnblogs.com/JerryZao/p/8619337.html
Copyright © 2011-2022 走看看