Python函数式编程 map reduce filter

函数式编程,使代码简洁高效。

Map函数:

  map(func, *iterables),作用是将一个列表映射到另一个列表。

class map(object):
    """
    map(func, *iterables) --> map object

    Make an iterator that computes the function using arguments from
    each of the iterables.  Stops when the shortest iterable is exhausted.
    """

使用方法:

def f(x):
    return x**2

li = range(1,10)
res = map(f,li)
print(res)
print(list(res))

"""
<map object at 0x000000000117E2E8>
[1, 4, 9, 16, 25, 36, 49, 64, 81]
"""

      

map(functioniterable...)

map()函数接收两个参数,一个是函数,一个是可迭代的对象,map将传入的函数依次作用到序列的每个元素,返回一个map对象,不是list。

基本等价于 [f(x) for x in interable],列表推导比map效率要高一些

map(lambda x: x+1, range(1, 3)) => [x+1 for x in range(1,3)]

str = ["far","foo","bar"]
mp = map(lambda x:x.upper(),str)
res = list(mp)
print(res)

"""
[‘FAR‘, ‘FOO‘, ‘BAR‘]
"""

Reduce函数

  reduce(function, sequence[, initial]),对可迭代对象依次做累计操作,如依次相加或相乘。

  reduce()方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值。

def reduce(function, sequence, initial=None): # real signature unknown; restored from __doc__
    """
    reduce(function, sequence[, initial]) -> value

    Apply a function of two arguments cumulatively to the items of a sequence,
    from left to right, so as to reduce the sequence to a single value.
    For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5).  If initial is present, it is placed before the items
    of the sequence in the calculation, and serves as a default when the
    sequence is empty.
    """

直接使用会报错

reduce(lambda x, y : x + y, [1, 3, 5, 7, 9])"""NameError: name ‘reduce‘ is not defined"""

正确的使用是:reduce是functools中的一个函数,需要引用:from functools import reduce

使用方法:

from functools import reduce

res1 = reduce(lambda x, y: x*y, [1, 2, 3])
res2 = reduce(lambda x, y : x + y, [1, 3, 5])
print(res1)
print(res2)

"""
6
9
"""

Filter函数

  filter(function or None, iterable),作用是按照所定义的函数过滤掉列表中的一些元素

class filter(object):
    """
    filter(function or None, iterable) --> filter object

    Return an iterator yielding those items of iterable for which function(item)
    is true. If function is None, return the items that are true.
    """

使用方法:

flt = filter(lambda x: x > 5, range(10))
res = list(flt)
print(flt)
print(res)
"""
<filter object at 0x0000000000649A58>
[6, 7, 8, 9]
"""
时间: 2024-08-08 05:22:20

Python函数式编程 map reduce filter的相关文章

Python函数式编程-map/reduce

1.map map()传入的第一个参数是f,即函数对象本身. map()函数接收两个参数,一个是函数,一个是Interable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回. >>> def f(x): ... return x*x ... >>> r=map(f,[1,2,3,4,5]) >>> list (r) [1, 4, 9, 16, 25] 2.reduce reduce把一个函数作用在一个序列[x1, x

Python函数式编程——map()、reduce()

文章来源:http://www.pythoner.com/46.html 提起map和reduce想必大家并不陌生,Google公司2003年提出了一个名为MapReduce的编程模型[1],用于处理大规模海量数据,并在之后广泛的应用于Google的各项应用中,2006年Apache的Hadoop项目[2]正式将MapReduce纳入到项目中. 好吧,闲话少说,今天要介绍的是Python函数式编程中的另外两个内建函数map()和reduce(),而不是Google的MapReduce. 1.ma

(转)Python函数式编程——map()、reduce()

转自:http://www.jianshu.com/p/7fe3408e6048 1.map(func,seq1[,seq2...]) Python 函数式编程中的map()函数是将func作用于seq中的每一个元素,并用一个列表给出返回值.如果func为None,作用通zip().当seq只有一个时,将func函数作用于这个seq的每一个元素上,得到一个新的seq. 举个例子来说明,(假设我们想要得到一个列表中数字%3的余数,那么可以写成下面的代码): >>> print map(la

Python-函数式编程-map reduce filter lambda 三元表达式 闭包

lambda 匿名函数,核心是作为算子,处理逻辑只有一行但具有函数的特性,核心用于函数式编程中 三元运算符 其实本质上是if分支的简化版,满足条件返回 if 前面的值,不满足条件返回 else后面的值 # 100 < 100 返回 False, 则 返回 else后面的值 value = 100 if 100 < 100 else 10 print(value) map 映射函数(依次把可迭代对象(可多个)中的值依次传递到函数中,然后返回生成器(长度以最短的为基础)) numbers = [1

1.python函数式编程-map函数

编程方法论 面向过程 函数式 面向对象 面向过程 将编程过程拆分成多个步骤,在函数中按照每个步骤进行编程: 函数式编程 编程语言定义的函数+数学意义的函数 1.不可变,不用变量保存状态,不修改变量: 2.第一类对象,函数即变量---------高阶函数:把函数当做参数传递给另外一个函数:返回值中包含函数.(装饰器) 3.尾调用:在函数的最后一步调用另外一个函数(最后一行不一定是函数的最后一步) 调用栈:在系统调用递归函数的时候不是最后一步(区别最后一行),则需要保留当前层的状态.如果是最后一步进

python基础之map/reduce/filter/sorted

---map() 首先来看一看map()函数,map函数接受两个参数,第一个参数是算法,第二个参数是具体数值(注意,数值必须为可迭代的).即map(fun,iterable) map函数就是将具体数值根据算法进行计算,并将结果保存为一个迭代器.我们知道,迭代器很'懒',通过调用next函数一次只输出一个值. 来看一个最简单的map()例子. #给定一组数1,2,3,4,5,6.要求求出每个数加一后的值 def fun(x): x=x+1 return x li=[1,2,3,4,5,6] r=m

Python函数式编程——filter()、map()、reduce()

提起map和reduce想必大家并不陌生,Google公司2003年提出了一个名为MapReduce的编程模型[1],用于处理大规模海量数据,并在之后广泛的应用于Google的各项应用中,2006年Apache的Hadoop项目[2]正式将MapReduce纳入到项目中. 好吧,闲话少说,今天要介绍的是Python函数式编程中的另外两个内建函数map()和reduce(),而不是Google的MapReduce. 1.filter() 格式:filter( func, seq ) 该内建函数的作

函数式编程工具:filter和reduce

# -*- coding: utf-8 -*- #python 27 #xiaodeng #函数式编程工具:filter和reduce #python内置函数中,map函数是用来进行函数式编程这类工具最简单的内置函数代数 #函数式编程含义: #一种编程范式,也就是如何编写程序的方法论,是一种编程思想. #无法给予准确的定义 #函数式编程的编程风格强调表达式计算,而不是执行命令. #常见函数式编程 #filter:基于某一测试函数过滤出一些元素 #reduce:对每对元素都应用函数并运行到最后结果

python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))

1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层的函数,可以把复杂的任务分解成简单的任务,这种一步一步的分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. 函数式编程:是使用一系列函数去解决问题,函数式编程就是根据编程的范式来的出想要的结果,只要是输入时确定的,输出就是确定的. 1.2高阶函数 能把函数作为参数传入,这样的函数就称为高阶函数. 1.2.1函数即变量 以python的内置函数print()为列,调用该函数一下代码 >>> pri