python map函数(23)
截至到目前为止,其实我们已经接触了不少的python内置函数,而map函数也是其中之一,map函数是根据指定函数对指定序列做映射,在开发中使用map函数也是有效提高程序运行效率的办法之一.
一.语法定义
'''
function:函数名
iterable:一个序列或者多个序列,实际上这就是function对应的实参
'''
map(function, iterable, ...)
二.实战练习
1.使用map函数
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:何以解忧
@Blog(个人博客地址): shuopython.com
@WeChat Official Account(微信公众号):猿说python
@Github:www.github.com @File:python_map.py
@Time:2019/10/7 19:48 @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函数配合匿名函数一起使用
# 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传参的时候也应该传递多个序列.
三.效率对比
对比以下效率,向列表中存入一千万条数据,比较下耗时情况:
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循环
四.重点总结
1.map函数的参数是由函数和一个序列或者多个序列构成;
2.map函数处理的结果是迭代器,而且只能迭代一次,如果需要多次使用,请提前保存;
猜你喜欢:
转载请注明:猿说Python » python map函数

python map函数(23)的更多相关文章
- python map函数
map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 例如,对于li ...
- python map函数 reduce函数
Python中map()函数浅析 函数式编程: 更好的描述问题 map函数 怎么理解当传入多个参数list时,map如何运作: abc函数第一次传入的数据时 (11,44,77),然后(22,5 ...
- python——map()函数
描述 map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表. 语法 m ...
- py-day3-6 python map函数
map函数 :处理序列中的每个元素,得到的结果是一个列表,该列表元素个数及位置与原来一样 ## 求列表里元素的平方 (原始方法) num_1=[1,2,13,5,8,9] res =[] for i ...
- python map函数的使用
python2 中的map函数返回列表 python3 中的map函数返回迭代器 >>>def square(x) : # 计算平方数 ... return x ** 2 ... & ...
- python map函数、filter函数、reduce函数
1.map函数:map(func,可迭代对象): ①func可以是自定义的函数,也可以是功能简单的匿名函数(通过lambda定义) ②处理逻辑:表示将传入的可迭代对象依次循环,将每个元素按照传入的fu ...
- day16 Python map函数
num_l=[1,2,10,5,3,7] #lambda x:x+1 # def add_one(x): # return x+1 #lambda x:x+1 # def reduce_one(x): ...
- Python map,filter,reduce函数
# -*- coding:utf-8 -*- #定义一个自己的map函数list_list = [1,2,4,8,16] def my_map(func,iterable): my_list = [] ...
- python filter函数(40)
一.filter函数简介 filter函数主要用来筛选数据,过滤掉不符合条件的元素,并返回一个迭代器对象,如果要转换为列表list或者元祖tuple,可以使用内置函数list() 或者内置函数tupl ...
随机推荐
- react页面跳转 window.location.href和window.open的几种用法和区别
https://www.cnblogs.com/Qian123/p/5345298.html
- CF620E New Year Tree 线段树+dfs序+bitset
线段树维护 dfs 序是显然的. 暴力建 60 个线段树太慢,于是用 bitset 优化就好了 ~ code: #include <bits/stdc++.h> #define M 63 ...
- CF938D Buy a Ticket dijkstra
考试T1,建一个反图跑一个最短路就好了~ code: #include <bits/stdc++.h> #define ll long long #define N 200002 #def ...
- learning scala Function Recursive Tail Call
可以使用scala库,可以从字面上看出是在调用 递归函数: code import scala.util.control.TailCalls._ val arrayDonuts: Array[Stri ...
- bzoj2738矩阵乘法
题意: 给你一个N*N的矩阵,没有修改,每次询问一个子矩形中的第K小数. 题目链接 思路: 当它只有一列时,其实就是区间第K大,也就是整体二分可以解决的. 现在到了二维,只需要将之前的树状数组改成二维 ...
- 10月清北学堂培训 Day 2
今天是杨溢鑫老师的讲授~ T1 物理题,不多说(其实是我物理不好qwq),注意考虑所有的情况,再就是公式要推对! #include<bits/stdc++.h> using namespa ...
- Go开发环境安装与环境变量配置
1.Go安装包下载 https://studygolang.com/dl 2.安装 Windows平台下,直接下一步即可完成安装. 3.配置环境变量 系统变量 安装完成后,在系统变量的Path一栏,会 ...
- GFS中元数据的管理
GFS 元数据(metadata)中包含三部分: GFS元数据的管理方式: 1.文件的命名空间和块的命名空间: 采用持久化的方式. 对于文件和块的命名空间以及从文件到块的映射:通过向操作日志登记修改而 ...
- Anriod手机抓包
1. 下载Fiddler http://fiddler2.com/ 2. 开启Fiddler的远程连接,Fiddler 主菜单 Tools -> Fiddler Options--> Co ...
- 深入理解JVM虚拟机9:JVM监控工具与诊断实践
转自https://juejin.im/post/59e6c1f26fb9a0451c397a8c jvm优化必知系列——监控工具 微信公众号[Java技术江湖]一位阿里 Java 工程师的技术小站. ...