python学习笔记——高阶函数map()

满足以下两点中任意一点,即为高阶函数:

1.函数接收一个或多个函数作为参数

2.函数返回一个函数

1 描述

用函数和可迭代对象中每一个元素作为参数,计算出新的迭代对象

map() 会根据提供的函数对指定序列做映射。

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

2 语法

map(function, sequence[, sequence, ...])

function:函数

sequence:一个或多个序列

返回值 : 新的迭代对象

3 示例

3.1 一个迭代参数时

以下代码演示是再python3的条件下进行的,再python2条件下运行时map函数略有区别,不用加 print([i for i in y]) ,可直接输出 print(y),

def fun(x):
    return x + 3

y = map(fun,[0,1,2])
z = map(fun,range(3))

print(‘fun:‘,fun)    #fun: <function fun at 0x7fea226eaf28>
print(‘y:‘,y)    #y: <map object at 0x7fea20f59518>
print(‘z:‘,z)    #z: <map object at 0x7fea20f594e0>
print(i for i in y)    #<generator object <genexpr> at 0x7fea22621f68>
print(i for i in z)    #<generator object <genexpr> at 0x7fea22621f68>
print([i for i in y])    #[3, 4, 5]
print([i for i in z])    #[3, 4, 5]

运行

fun: <function fun at 0x7fea226eaf28>
y: <map object at 0x7fea20f59518>
z: <map object at 0x7fea20f594e0>
<generator object <genexpr> at 0x7fea22621f68>
<generator object <genexpr> at 0x7fea22621f68>
[3, 4, 5]
[3, 4, 5]

3.2 两个迭代参数(迭代参数内元素相等)

def fun(x,y):
    return x + y

y = map(fun,[0,1,2],[10,11,12])
z = map(fun,range(3),range(10,13))

print([i for i in y])    #[10, 12, 14]
print([i for i in z])    #[10, 12, 14]

运行

[10, 12, 14]
[10, 12, 14]

3.3 两个迭代参数(迭代参数内元素不相等)

当迭代参数中的元素不相等时,以最小元素数量为主,也即“木桶效应

def fun(x,y):
    return x + y

y = map(fun,[0,1,2,3,4,5,6,7,8,9],[10,11,12])
z = map(fun,range(3),range(10,20))

print([i for i in y])    #[10, 12, 14]
print([i for i in z])    #[10, 12, 14]

4 Python3下map函数的显示问题

map函数是Python里面比较重要的函数,设计灵感来自于函数式编程。Python官方文档中是这样解释map函数的:

map(functioniterable...)

Return an iterator that applies function to every item of iterable, yielding the results. If additional iterable arguments are passed, function must take that many arguments and is applied to the items from all iterables in parallel. With multiple iterables, the iterator stops when the shortest iterable is exhausted.

即map函数接收的第一个参数为一个函数,可以为系统函数例如float、或者def定义的函数、或者lambda定义的函数均可。

举一个简单的例子,下面这个例子在Python2.7下是可以正常显示的:

ls = [1,2,3]
rs = map(str, ls)
 #打印结果
[‘1‘, ‘2‘, ‘3‘]
lt = [1, 2, 3, 4, 5, 6]
def add(num):
    return num + 1
rs = map(add, lt)
print rs
#[2,3,4,5,6,7]

但是在Python3下我们输入:

ls=[1,2,3]
rs=map(str,ls)
print(rs)

显示的却是:

<map at 0x3fed1d0>

而不是我们想要的结果,这也是Python3下发生的一些新的变化,如果我们想得到需要的结果需要这样写:

ls=[1,2,3]
rs=map(str,ls)
print(list(rs)

这样显示的结果即为我们想要看到的。这一点在《机器学习实战》的第10章中会有一点帮助。

转自:https://www.cnblogs.com/itdyb/p/5731804.html

时间: 2024-10-13 05:14:43

python学习笔记——高阶函数map()的相关文章

Python学习笔记——高阶函数

变量可以指向函数: >>> abs(-8) 8 >>> abs <built-in function abs>    可以看出abs(-8)是函数调用,而abs是函数本身 如果我们要获得函数调用结果,我们可以把结果赋值给变量: >>> x = abs(-8) >>> x 8 如果把函数本身赋值给变量: >>> f = abs >>> f <built-in function abs

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,

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

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

Python 函数式编程--高阶函数Map、Reduce、Filter、Sorted

1.1   高阶函数 变量可指向函数 >>> abs(-10) 10 >>> x = abs    --x指向abs函数 >>> x(-1)      --直接调用x 1 调用abs和调用x完全相同. 函数名也是变量 >>> abs = 10 >>> abs(-10) Traceback (most recent call last): File "<stdin>", line 1,

python学习day07 高阶函数 装饰器 语法糖

语法糖对于计算机的运行并没有任何的好处,但是对于程序员的好处是很大的,方便我们写代码,所以称为糖 #******************************装饰器************************* # 装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象. # 装饰器的应用场景:比如插入日志,性能测试,事务处理,缓存等等场景 import time def func1(): print('in f

Python 学习笔记 -- 内嵌函数、闭包、匿名函数、高阶函数map、高阶函数filter、高阶函数reduce

1 #------------------------------内嵌函数------------------------------ 2 #内嵌函数就是在函数内部定义函数 3 #实例一 4 print("#------------------------------内嵌函数------------------------------") 5 def funOutOne(): 6 x = 5 7 def funIn(): 8 x = 3 9 print("My funOutO

python 中的高阶函数

函数名其实就是指向函数的变量 >>> abs(-1) 1 >>> abs <built-in function abs> >>> a=abs >>> a(-1) 1 高阶函数:能接收函数做变量的函数 >>> def abc(x,y,f): ... return f(x)+f(y) ... >>> abc(-2,3,abs) 5 python中的内置高阶函数 map()函数和reduce(

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

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

python之6-2高阶函数

1. map函数 map(函数A,字符串或者列表) map函数的意思是将函数A依次作用到字符串的每个字符或者列表的每个元素. 例如: map(lambda x: x*x,[1,2]) [1, 4] 这里lambda是匿名函数,匿名函数的作用就是不用定义函数名. 格式:lambda 参数: exp 关于map函数,其实用的并不是太多,因为可以用列表解析来写,例如上面的等价于[x*x for x in range(1,3)] 2. reduce函数 reduce(函数A,字符串或者列表) reduc