• 内置函数补充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则都是列表。

  • 相关阅读:
    如何做一个按钮二个事件
    JavaScript中onmouseover时如何让鼠标指针变成一个小手状
    英语口语整理,灵活运用了,口语基本就没问题了
    javascript 传递 '' 时出错 换成 '&' ok
    一个按钮触发两个事件可以吗?
    Select中DISTINCT关键字的用法?
    使下拉框某项不可选的方法
    新打开窗口属性 a href
    调试和测试 Swing 代码
    打造专业外观九宫图
  • 原文地址:https://www.cnblogs.com/greatkyle/p/6726361.html
Copyright © 2020-2023  润新知