Python map 函数

ChatGPT 3.5 国内中文镜像站免费使用啦

零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门


一.前言

       截至到目前为止,其实我们已经接触了不少的 Python 内置函数,而 map 函数也是其中之一,map 函数是根据指定函数对指定序列做映射,在开发中使用map 函数也是有效提高程序运行效率的办法之一.

图片[1]-Python map 函数-猿说编程

二.Python map 函数语法简介

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python map 函数.py
@Time:2021/04/13 07:37
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
 
"""

'''
参数描述:
    function:函数名
    iterable:一个序列或者多个序列,实际上这就是function对应的实参
返回值:
    返回值是迭代器,注意返回的结果只能迭代一次,如果需要多次使用请提前保存结果并处理。
'''
map(function, iterable, ...)


# 注意返回的结果只能迭代一次
x = map(func1,range(0,10))

print(list(x))//返回有数据的列表 

# map函数返回的迭代器只能迭代一次,迭代之后会自动清空
print(list(x))   // 返回空列表

三.Python map 函数实战

1.使用 map 函数

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python map 函数.py
@Time:2021/04/13 07:37
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
 
"""

def func1(x):
    # 对序列中的每一个元素乘以10并返回
    return x*10


'''
    map() 会根据提供的函数对指定序列做映射。
    序列中的每一个元素调用 func1 函数,返回新列表。
'''
x = map(func1,range(0,10))
print(list(x))
# map函数返回的迭代器只能迭代一次,迭代之后会自动清空
print(list(x))

print("***"*20)
# 将map函数返回的迭代器保存转为list,可以多次使用
y = list(map(func1,range(0,10)))
print(y)
print(y)

'''
输出结果:

[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
[]
************************************************************
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
'''

2.map 函数配合 lambda 匿名函数一起使用

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python map 函数.py
@Time:2021/04/13 07:37
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
 
"""

# map函数配合匿名函数使用
x = list(map(lambda a:a*10,range(0,10))) # 序列中的每个元素乘以10
print(x)

# map函数配合匿名函数使用,匿名函数有两个参数,所以map传参数应该也是两个序列
y = list(map(lambda a,b:a+b,[1,2,3,5,6,7],[10,20,30,50,60,70])) # 两个序列相加
print(y)

'''
输出结果:

[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
[11, 22, 33, 55, 66, 77]
'''

       注意:如果 map 函数中的函数是多个参数,那么 map 传参的时候也应该传递多个序列.

图片[2]-Python map 函数-猿说编程

四.Python map 函数效率对比

       对比一下效率,向列表 list 中存入一千万条数据,比较下耗时情况:

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python map 函数.py
@Time:2021/04/13 07:37
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
 
"""

import time
list1 = list()

# 普通for循环
start = time.clock()
for i in range(0,10000000):
    list1.append(i)
print("普通for循环耗时:",time.clock() - start)

# 列表推导式
list1.clear()
start = time.clock()
list1 = [i for i in range(0,10000000)]
print("列表推导式循环耗时:",time.clock() - start)

# map映射函数
list1.clear()
start = time.clock()
list1 = list(map(lambda x:x,range(0,10000000)))
print("map映射函数耗时:",time.clock() - start)

'''
输出结果:

普通for循环耗时: 1.1869014999999998
列表推导式循环耗时: 0.5339119999999999
map映射函数耗时: 0.9047431000000001
'''

       根据测试结果看来:列表推导式效率 > map映射函数 > 普通for循环

图片[3]-Python map 函数-猿说编程

五.Python map 函数总结

  •        1.map 函数的参数是由函数和一个序列或者多个序列构成;
  •        2.map 函数处理的结果是迭代器,而且只能迭代一次,如果需要多次使用,请提前保存;

六.猜你喜欢

  1. Python 字符串/列表/元组/字典之间的相互转换
  2. Python 局部变量和全局变量
  3. Python type 函数和 isinstance 函数区别
  4. Python is 和 == 区别
  5. Python 可变数据类型和不可变数据类型
  6. Python 浅拷贝和深拷贝
  7. Python 递归函数
  8. Python sys模块
  9. Python 列表list
  10. Python 元组tuple
  11. Python 字典 dict
  12. Python 条件推导式
  13. Python 列表推导式
  14. Python 字典推导式
  15. Python 函数声明和调用
  16. Python 不定长参数 *argc/**kargcs

ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
THE END
喜欢就支持一下吧
点赞3 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容