zoukankan      html  css  js  c++  java
  • 内置函数补充map、reduce和filter等

    map函数:映射功能

    map(function, iterable, ...):可迭代对象向函数function传入元素,并得到一个返回值.

    1 >>> map(lambda x :x+1,[1,2,3.4])
    2 [2, 3, 4.4]
    3 >>> map(lambda x :x+"_key",{"key":"value","key1":"value2"})
    4 ['key1_key', 'key_key']

    注意,在python2和python3中,map函数的返回的类型不一样。

    python2 map函数返回的是列表。

    1 >>> l = map(lambda x :x+"_key",{"key":"value","key1":"value2"})
    2 >>> l
    3 ['key1_key', 'key_key']
    4 >>> type(l)
    5 <type 'list'>

    python3中,map函数返回的是map对象,它是一个迭代器,可以调用next方法。

     1 >>> l = map(lambda x :x+"_key",{"key":"value","key1":"value2"})
     2 >>> l
     3 <map object at 0x10558c1d0>
     4 >>> next(l)
     5 'key_key'
     6 >>> 
     7 >>> next(l)
     8 'key1_key'
     9 >>> next(l)
    10 Traceback (most recent call last):
    11   File "<stdin>", line 1, in <module>
    12 StopIteration

     reduce函数:处理一个序列,并返回一个值,适合求和。python2中自带reduce函数,python3中需要导入“from functool import reduce”。

    reduce(function, iterable[, initializer ]):可迭代对象会把元素传给函数function,function会接收到两个值,如果未指定初始值initializer,则默认传0.

    python3

    1 >>> from functools import reduce 
    2 >>> l = reduce(lambda x,y:x+y,range(1,100),100) #给一个初始值100
    3 >>> l
    4 5050

    filter函数:

    filter(function, iterable):把可迭代对象变成迭代器,把每一个元素传入函数function,function会返回布尔值,结果为Ture则保留。

    python2: 

     1 >>> item_price =[
     2 ...     {"item":"apple","price":5},
     3 ...     {"item":"egg","price":4.5},
     4 ...     {"item":"water","price":1.5},
     5 ...     {"item":"fish","price":15}
     6 ... ]
     7 >>> l = filter(lambda d: d["price"]>=5,item_price)
     8 >>> type(l)
     9 <type 'list'>
    10 >>> l
    11 [{'item': 'apple', 'price': 5}, {'item': 'fish', 'price': 15}]

    python3

    >>> item_price =[
    ...     {"item":"apple","price":5},
    ...     {"item":"egg","price":4.5},
    ...     {"item":"water","price":1.5},
    ...     {"item":"fish","price":15}
    ... ]
    >>> l = filter(lambda d: d["price"]>=5,item_price)
    >>> type(l)
    <class 'filter'>
    >>> l
    <filter object at 0x10558c438>
    >>> next(l)
    {'item': 'apple', 'price': 5}
    >>> next(l)
    {'item': 'fish', 'price': 15}
    >>> next(l)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    StopIteration

     pyhton3中封装了很多,类型就是类。所以我们使用map、reduce和fliter返回的都是各自的类型,且都是生成器,可以调用next方法。而python2则都是列表。

  • 相关阅读:
    python之 网络编程、异常处理、面向对象
    python sys模块、mongodb操作、接口开发、程序分目录、压缩解压文件
    linux安装redis完整步骤
    python之:map、filter、random、datatime,写日志,发邮件,操作mysql、redis,MD5加密,写excel
    函数、模块
    python json处理、集合操作、函数定义、文件读写
    python字典、list、字符串常见处理方法、元组、文件读写
    学习笔记
    接口测试笔记
    【04】Cent OS 7 中部署JDK + Tomcat 环境
  • 原文地址:https://www.cnblogs.com/greatkyle/p/6726361.html
Copyright © 2011-2022 走看看