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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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


以上是关于python学习笔记——高阶函数map()的主要内容,如果未能解决你的问题,请参考以下文章

python 学习笔记3

python进阶学习笔记

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

Python100天学习笔记Day18 函数相关知识

Python100天学习笔记Day18 函数相关知识

python学习笔记之函数总结--高阶函数以及装饰器