zoukankan      html  css  js  c++  java
  • 常用的几个内置函数介绍(附带习题练习)

    1 enumerate:枚举,返回一个枚举对象。

    print(enumerate([1,2,3]))#可选开始位置
    for i in enumerate([1,2,3]):
        print(i)
    for i in enumerate([1,2,3],100):
        print(i)

    2 zip:函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。

    l1 = [1,2,3,]
    l2 = ['a','b','c',5]
    l3 = ('*','**',(1,2,3))
    for i in zip(l1,l2,l3):
        print(i)
    输出结果:
    (1, 'a', '*')
    (2, 'b', '**')
    (3, 'c', (1, 2, 3))

    3.filter:过滤·

    # filter 过滤 通过你的函数,过滤一个可迭代对象,返回的是True
    # 类似于[i for i in range(10) if i > 3]
    def func(x):return x%2 == 0
    ret = filter(func,[1,2,3,4,5,6,7])
    # print(ret)
    for i in ret:
        print(i)
    输出结果:
    2
    4
    6

    4.map:会根据提供的函数对指定序列做映射。

    def square(x):  # 计算平方数
        return x ** 2
    
    print(list(map(square, [1, 2, 3, 4, 5])))  # 计算列表各个元素的平方
    
    print(list(map(lambda x: x ** 2, [1, 2, 3, 4, 5])))  # 使用 lambda 匿名函数
    
    # 提供了两个列表,对相同位置的列表数据进行相加
    print(list(map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])))
    输出结果:
    [1, 4, 9, 16, 25]
    [1, 4, 9, 16, 25]
    [3, 7, 11, 15, 19]

     5 sorted:对所有可迭代的对象进行排序操作。

    L = [('a', 1), ('c', 3), ('d', 4), ('b', 2), ]
    sorted(L, key=lambda x: x[1])  # 利用key
    print(L)
    
    students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
    sorted(students, key=lambda s: s[2])  # 按年龄排序
    print(students)
    
    sorted(students, key=lambda s: s[2], reverse=True)  # 按降序
    print(students)
    输出结果:
    [('a', 1), ('c', 3), ('d', 4), ('b', 2)]
    [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
    [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

    一些例题:

     1,用map来处理下述l,然后用list得到一个新的列表,列表中每个人的名字都是sb结尾

    l=[{'name':'alex'},{'name':'y'}]
    print(list(map(lambda x:x["name"]+"sb",l)))
    输出结果:
    ['alexsb', 'ysb']

    2用filter来处理,得到股票价格大于20的股票名字

    shares={
           'IBM':36.6,
           'Lenovo':23.2,
          'oldboy':21.2,
        'ocean':10.2,
        }
    print(list(filter(lambda x:shares[x]>20  , shares)))
    输出结果:
    ['IBM', 'Lenovo', 'oldboy']

    3 有下面字典,得到购买每只股票的总价格,并放在一个迭代器中。结果list一下[9110.0, 27161.0,......]

    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}]
    print(list(map(lambda x:x["shares"]*x["price"],portfolio )))
    输出结果:
    [9110.0, 27161.0, 4218.0, 1111.25, 735.7500000000001, 8673.75]

    4,用filter过滤出上题中单价大于100的股票。

    print(list(filter(lambda x:x["price"] >100 , portfolio)))
    输出结果:
    [{'name': 'AAPL', 'shares': 50, 'price': 543.22}, {'name': 'ACME', 'shares': 75, 'price': 115.65}]

    5:有如下数据类型:l1按照列表中的每个字典的values大小进行排序,形成一个新的列表。l1 = [ {'sales_volumn': 0},        {'sales_volumn': 108},

            {'sales_volumn': 337},
            {'sales_volumn': 475},
            {'sales_volumn': 396},
            {'sales_volumn': 172},
            {'sales_volumn': 9},
            {'sales_volumn': 58},
            {'sales_volumn': 272},
            {'sales_volumn': 456},
            {'sales_volumn': 440},
            {'sales_volumn': 239}]
    
    sorted(l1,key=lambda x:x["sales_volumn"])
    print(l1)
    结果:
    [{'sales_volumn': 0}, {'sales_volumn': 108}, {'sales_volumn': 337}, {'sales_volumn': 475}, {'sales_volumn': 396},
    {'sales_volumn': 172}, {'sales_volumn': 9}, {'sales_volumn': 58},
    {'sales_volumn': 272}, {'sales_volumn': 456}, {'sales_volumn': 440}, {'sales_volumn': 239}]

     

     

               

  • 相关阅读:
    【转载】Modelsim之 DO文件简介
    【原创】Quartus与Modelsim的联合仿真及脚本
    【原创】Quartus II 简单设计流程
    【原创】Modelsim仿真简单流程
    【原创】静态时序分析整理一
    【原创】DC的一些命令
    【转载】建立时间与保持时间
    linux 创建链接命令 ln -s 软链接
    Vim常用命令
    gvim查找与替换命令
  • 原文地址:https://www.cnblogs.com/ltk-python/p/9230429.html
Copyright © 2011-2022 走看看