zoukankan      html  css  js  c++  java
  • map,reduce,filter

    map

    map(function,Iterable) map将传入的函数一次作用到序列的每个元素,并把结果作为新的 Iterator返回

      names = ['james','ooc','rose','green']

    方式一:手动实现

      new_names = []
    for name in names:
       new_names.append('steven ' + name)
    print(new_names)
    # ['steven james', 'steven ooc', 'steven rose', 'steven green']

    方式二:列表生成

      new_names = ['steven ' + name for name in names]
    print(new_names)
    # ['steven james', 'steven ooc', 'steven rose', 'steven green']

    方式三:map + 匿名函数

      lam_name = map(lambda x:'steven' + x , names)
    print(lam_name)
    print(list(lam_name))
    # ['steven james', 'steven ooc', 'steven rose', 'steven green']

    Reduce

    reduce(function,sequence) reduce把一个函数作用在一个序列[x1, x2, x3, …]上,reduce把结果继续和序列的下一个元素做累计计算

    方式一:手动实现

      num = 0
    for i in range(101):
    num += i
    print(num)
    # 5050

    方式二:列表生成式

      print(sum([i for i in range(101)]))
    # 5050

    方式三:reduce + 匿名函数

    在python3中 reduce要在functools中调用

      from functools import reduce
    print(reduce(lambda x,y:x+y,[i for i in range(101)],100))
    # 5150 reduce
    # 实际上 def reduce(function, sequence, initial=None) 有第三个参数# 初始值为none
    print(reduce(lambda x,y:x+y,[i for i in range(101)]))
    # 5050
    print(reduce(lambda x,y:x+y,['h','e','l','l','o'],'-------'))
    # -------hello

    Filter

    filter()函数用于过滤序列。和map()类似,filter()也接受一个函数和一个序列。和map()不同的是,fileter()把传入的函数依次作用于每个元素,然后根据返回值true 还是false 决定保留还是丢弃该元素。

      names = ['steven james','ooc','steven rose','steven green']

    方式一:手动实现

      new_names = []
    for name in names:
       if name.startswith('steven'):
           new_names.append(name)
    print(new_names)
    # ['steven james', 'steven rose', 'steven green']

    方式二:列表生成式

      new_names=[name for name in names if name.startswith('steven')] 
    # ['steven james', 'steven rose', 'steven green']

    方式三:filter + 匿名函数

      lam = filter(lambda name:name.startswith('steven'),names)
    print(lam)
    print(list(lam))
    # <filter object at 0x1050d6550>
    # ['steven james', 'steven rose', 'steven green']

     

  • 相关阅读:
    【郑轻邀请赛 G】密室逃脱
    【郑轻邀请赛 C】DOBRI
    【郑轻邀请赛 F】 Tmk吃汤饭
    【郑轻邀请赛 I】这里是天堂!
    【郑轻邀请赛 B】base64解密
    【郑轻邀请赛 A】tmk射气球
    【郑轻邀请赛 H】 维克兹的进制转换
    解决adb command not found以及sdk环境配置
    adb shell 命令详解,android, adb logcat
    Unexpected exception 'Cannot run program ... error=2, No such file or directory' ... adb'
  • 原文地址:https://www.cnblogs.com/OutOfControl/p/9767173.html
Copyright © 2011-2022 走看看