python 高阶函数:map、reduce

格式:

map(函数, list)

reduce(函数,list)

区别:

1.map分别作用于list的每个元素,返回新的列表

2.reduce将list的每个元素整合,返回一个新的

优势:

1.map、reduce自带for循环,减少了代码量


一、map 的使用

#!/usr/bin/python

def f(x):
    return x*x

lis = [1, 2, 3, 4, 5]
map_list =map(f, lis)  #将lis的元素分别在f()函数中做运算
print lis
print map_list

#str
map_list1 = map(str, lis); #将lis的元素分别在str函数中转换成char类型
print lis
print map_list1

二、reduce 的使用

def fsum(x, y):
    return x+y;

lis = [1, 3, 5, 7]   
lis1 = reduce(fsum, lis)
print lis1

三、map \ reduce混合使用

def fsum(x, y):
    return x+y;

lis = [1, 3, 5, 7]   
lis1 = reduce(fsum, lis)
print lis1

#获取数字和
def fadd(x, y):
    return x*10+y
   
num = reduce(fadd, lis);
print 'get num:', num

stri = str(num);
print 'num2str:', stri;

#将str转数字
def ch2num(s):
    return {'0':0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]  #此函数执行返回过程如下:

# {'0':0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[stri[0]] --->return 1

# {'0':0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[stri[1]] --->return 3

# {'0':0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[stri[2]] --->return 5

# {'0':0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[stri[4]] --->return 7

lis= map(ch2num, stri);
print 'str2num:',lis;

#将数字列表lis整合
def f(x,y):
    return x*10+y;

num = reduce(f, strin);
print 'add:', num;

四、难点记录

暂时无力解决,先记录,待深入后再回头看

整理成一个str2int的函数就是:


def str2int(s):    def fn(x, y):        return x * 10 + y    def char2num(s):        return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]    return reduce(fn, map(char2num, s))lis = ['1', '2', '3']    num = str2int(lis)print num;

运行结果:123

还可以用lambda函数进一步简化成:

def char2num(s):    return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]def str2int(s):    return reduce(lambda x,y: x*10+y, map(char2num, s))    lis = ['1', '2', '4']    num = str2int(lis)print num;

运行结果:124

原文地址:http://blog.51cto.com/13502993/2145193

时间: 2024-10-09 19:48:15

python 高阶函数:map、reduce的相关文章

python 高阶函数map/reduce

Python内建了map()和reduce()函数. map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回. 1 def f(x): 2 return x*x 3 r = map(f, [1,2,3,4,5,6]) 4 print(r) 5 print(list(r)) Output: <map object at 0x00000269FA005E10> [1, 4, 9, 16, 25, 36] re

Python 高阶函数 -- map/reduce

这个内容我是参考廖雪峰的博客,摘抄其中一些内容而来的,附带解决他最后的问题代码. 这是我在C/C++中未曾见过的语法(可能是我学艺未精),理解它确实花了十来二十分钟.它提供了一条google的论文链接:"MapReduce: Simplified Data Processing on Large Clusters",据说是一篇很牛逼的文章.当我理解了这个概念后,觉得确实很方便. 先看map.map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列

Python高阶函数_map/reduce/filter函数

本篇将开始介绍python高阶函数map/reduce/filter的用法,更多内容请参考:Python学习指南 map/reduce Python内建了map()和reduce()函数. 如果你读过Google的那篇大名鼎鼎的论文"MapReduce: Simplified Data Processing on Large Clusters",你就能大概明白map/reduce的概念. 我们先看map.map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序

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

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

函数式编程 &amp; Python中的高阶函数map reduce filter 和sorted

1. 函数式编程 1)概念 函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念.wiki 我们知道,对象是面向对象的第一型,那么函数式编程也是一样,函数是函数式编程的第一型.在面向对象编程中,我们把对象传来传去,那在函数式编程中,我们要做的是把函数传来传去,而这个,说成术语,我们把他叫做高阶函数.飞林沙 2)特点 计算视为视为函数而非指令 纯函数式编程:不需变量,无副作用,测试简单(每次的执行结果是一样的) 支持高阶函数,代码简洁 2. python支持

JavaScript高阶函数 map reduce filter sort

本文是笔者在看廖雪峰老师JavaScript教程时的个人总结 高阶函数 一个函数就接收另一个函数作为参数,这种函数就称之为高阶函数 1.高阶函数之map: 此时我们有一个数组和一个接受一个参数并返回一个数的函数.我们需要把这个数组的每一个值在这个函数上走一遍,从而得到一个新数组.此时就需要map了 var a = [1,2,3,4,5,6]; var b = [] var fun = function(x) { return x * x; } b = a.map(fun) alert(b)  /

Python之高阶函数map/reduce

Python内建map()和reduce()函数 map()函数接收两个参数一个是函数一个是一个Iterable(迭代器),并把结果作为新的Iterator(生成器)返回 有一个函数f(x)=x*x作用于序列list[1,2,3,4,5,6,7,8,9] 使用python函数实现 >>> r=map(f,range(1,4)) >>> r <map object at 0x7fcec039ee80> >>> list(r) [1, 4, 9

python 高阶函数 map()和reduce()

一.map()函数 map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回. 1 >>> from collections import Iterator 2 >>> def f(x): 3 ... return x * x 4 ... 5 >>> r = map(f, [1, 2, 3, 4, 5]) 6 >>> r 7 <map obj

Python学习之高阶函数——map/reduce

map map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回. 即map(函数,Iteratable) map()传入的第一个参数是f,即函数对象本身.由于结果r是一个Iterator,Iterator是惰性序列,因此通过list()函数让它把整个序列都计算出来并返回一个list. >>> def f(x): ... return x * x ... >>> r = map(f,

Python 高阶函数map(),filter(),reduce()

map()函数,接收两个参数,一个是函数,一个是序列,map()把传入的函数依次作用于序列的每个元素,并把结果作为新的序列返回: aa = [1, 2, 3, 4, 5] print("map-result = ", list(map(lambda a: a * a, aa))) #map-result = [1, 4, 9, 16, 25] filter()函数,接收两个参数,一个是函数,一个是序列,filter()把传入的函数依次作用于每个元素,根据返回值是True还是False决