python列表解析式如何使用_python列表解析式,生成器,及部分内建函数使用方法...
标准库datetime
需要导入datetime模块:
import datetime
datetime模块:
对日期,时间,时间戳的处理
datetime的类方法
today ()
now(tz=None) 返回当前时间的datetime对象,时间到微秒,如果tz为none返回值和today()一样
utcnow()
fromtimestamp(timestamp,tz=None)从一个时间戳返回一个datemime对象
datetime对象:
timestamp()返回一个到微秒的时间戳
时间戳: 格林威治时间170年1月1日0点到现在的秒数
datetime对象,构造方法:
datetime.datetime(2017,10,08,13,55,35,123456)
year年month月day日hour时间minute分钟second秒microsecond微秒
replace() 返回并修改新的时间
isocalendar()返回一个三元组(年,周,周的天)
日期格式化:
类方法 strptime(date_string,foamat) ,返datetime对象
对象方法strftime(fotmat) ,返回字符串
字符串format函数格式化
timedelta对象:
datetime2= datetime1+datedelta
datetime2=datetime1-datedelta
timedelta=datetime1-datetime2
构造方法:
datetime.timedelta(day=0,秒=0,微秒=0,毫秒=0,分=0 ,时=0,weeks=0)
year= datetime.timedelta(day=365)
total_seconds()返回时间差的总秒数
time:
time.sleep(secs) 将调用线程挂起指定的秒数
列表解析:
举例:
生成一个列表,元素0~9,对每一个元素自增1后求平方返回新列表
l1=list(range(10))
l2=[]for i inl1:
l2.append((i+1)**2)
使用列表解析式的程序为:
l1=list(range(10))
l2=[(i+1)**2 for i inl1]print(l2)
列表解析list comprehension
语法:
[返回值 for 元素 in 可迭代对象 if条件]
使用中括号[],内部是for循环,if条件语句可选
返回一个新列表
列表解析式是一种语法糖
编译器会优化,不会因为简写而影响效率,反而优化提升效率
减少代码量,可读性强,工作量降低,减少出错
列表解析式进阶:
列表解析式为:[expr for item in iterable if cond1 if cond2]
自然语法为:
ret =[]for item initerable:ifcond1:ifcond2:
ret.append(expr)
举例:
20以内技能被2整除又能被3整除的数
[ifor i in range(20) if i%2==0 and i%3==0]
[ifor i in range(20) if i%2==0 if i%3==0]
列表解析式多层循环的用法:
列表解析式的写法:[expr for i in iterable1 for j in iterable2 ]
自然写法:
ret =[]for i initerable1:for j initerable2:
ret.append(expr)
举例
[(x, y) for x in 'abcde' for y in range(3)]
[[x, y]for x in 'abcde' for y in range(3)]
[{x: y}for x in 'abcde' for y in range(3)]
生成器表达式:
语法
(返回值 for 元素 in 可迭代对象 if条件)
列表解析式的中括号换成小括号就是生成器表达式
返回一个生成器
和列表解析式的区别:
生成器表达式时按需计算('惰性求值',延迟计算),需要的时候才计算值
列表解析式是立即返回值
生成器:
可迭代对象
迭代器
举例
和列表解析式对比:
计算方式:
生成器表达式延迟计算,列表解析式立即计算
内存占用:
单从返回值来说,生成器表达式省内存,列表解析式返回新列表
生成器没有数据,内存占用少,使用时,一个个返回数据,总体占用数据差不多
列表解析式构造新的列表需要占用内存空间
计算速度:
单看计算时间,生成器表达式耗时短,列解析式耗时长
但是生成器本身没有返回任何值,只返回了一个生成器对象
列表解析式构造返回了一个新的列表
总结:
一般来说 ,多用解析式,简短 高效
如果一个解析式非常复杂,难以理解,可以考虑拆解for循环
生成器和迭代器时不同的对象,但都是可迭代对象
内建函数:
id(value)
表示id
返回对象的唯一标识
哈希 hash()
返回一个对象的哈希值
类型type()
返回对象的类型
类型转换
float() int() bin() hex() oct() bool() list() tuple() dict() set() complex() bytes() bytearray(
输入input([prompt])
接收用户输入,返回一个字符串
打印 print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
打印输出,默认使用空格分割,换行结尾,输出到控制台
对象长度 len(s)
返回一个集合类型的元素个数
isinstance(obj,class_or_tuple)
判断对象obj是否属于某种类型或者元组中列出的某个类型
isinstance(True,int)
issubclass(cls,class_or_tuple)
判断类型cls是否时某种类型的子类或元组中列出的某个类型的子类
issubclass(bool,int)
绝对值abs(x) x为数值
最大值 max() 最小值min()
返回可迭代对象中最大或最小值
返回多个参数中最大或最小值
round(x) 四舍五入六取整,rount(-0.5)
pow(x,y) 等同于x**y
常用函数()
range(stop)
从0开始到stop-1的可迭代对象;range(start,stop[,step])从start开始到stop-1步长为step的可迭代对象
divmod (x,y) 等价于 tuple(x//y,x%y)
sum(可迭代对象[,start]) 对可迭代对象的所有数值元素求和
sum(1,100,2)) 求1到100步进为2的元素的和值
chr()给定一个一定范围的整数返回对应的字符
chr(97)=a chr(20013)=中
ord()返回字符对应的整数
ord('a')=97 ord('中')=20013
sorted(可迭代对象[元素][reverse])排序
返回一个新的列表默认升序
reverse是反转
反转:
reversed(seq)
返回一个反转元素的迭代器
枚举:
enumerate(seq, start=0)
迭代一个序列,返回索引数字和元素构成的二元组
star表示索引开始的数字,默认是0
迭代器和取元素 iter(可迭代对象)、next(可迭代对象)
iter 将一个可迭代对象封装成一个迭代器
next对一个迭代器取下一个元素,如果所有元素以取过,再次next会抛出StopIteration异常
可迭代对象:
能同过迭代一次次返回不同的元素的对象,所谓相同不是指值是否相同,而是元素在容器中是否是同一个,例如列表中的值可以重复
可以迭代,但是未必有序,未必可索引
可迭代对象有 : list tuple string bytes bytearray range set dict 生成器等
可以使用成员操作符innot in,in本质山就是在遍历对象
迭代器:
特殊的对象,一定是可迭代对象,具备可迭代对象的特征
通过iter法国法把一个可迭代对象封装成迭代器
通过next方法,迭代迭代器对象
生成器对象,就是迭代器对象
拉链函数zip(多个可迭代对象)
项拉链一样把多个可迭代对象合并在一起,返回一个迭代器
将每次从不同对象中取到的元素合并成一个元组
python列表解析式如何使用_python列表解析式,生成器,及部分内建函数使用方法...相关推荐
- python列表解析式如何使用_python列表推导式操作解析
python列表推导式操作解析 这篇文章主要介绍了python列表推导式操作解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 基本格式 [表达式 ...
- python列表的实现原理_python列表推导式原理和使用方法
偶尔会在python中看见这样一行代码: data = [x**2 for x in range(0, 5)] # 此时data = [0, 1, 4, 9, 16] 如果不知道背后的语法规则,那么很 ...
- python中append的用法_Python 列表 append() 使用方法及示例
Python 列表 append() 使用方法及示例 append()方法将一个项目添加到列表的末尾. append()方法将单个项目添加到列表的末尾. append()方法的语法为:list.app ...
- python列表的实现原理_Python列表对象实现原理
Python 列表对象实现原理 Python 中的列表基于 PyListObject 实现,列表支持元 素的插入.删除.更新操作,因此 PyListObject 是一个变长 对象(列表的长度随着元素的 ...
- python列表操作函数大全_Python列表操作函数
列表可以进行多个数据的存储,同时python中的列表设计非常到位,它可以实现内容动态扩充,可以进行后期数据的删除,这些就需要通过Python提供的列表操作函数来实现了. 对于Python语言而言,开发 ...
- python中的列表分片详解_python列表与元组详解实例
在这章中引入了数据结构的概念.数据结构是通过某种方式组织在一起的数据元素的集合.在python中,最基本的数据结构就是序列.序列中的每个元素被分配一个序号,即元素的位置,也被称为索引.注意:第一个索引 ...
- python列表有哪些操作_python列表的基本操作有哪些
python列表的基本操作有:1.创建列表,只要把逗号分隔的不同的数据项使用方括号括起来:2.添加新的元素:3.遍历列表:4.访问列表中的值:5.从list删除元素. 相关免费学习推荐:python教 ...
- python列表到元祖_python列表与元祖
python 的列表和元素: 共同点:有序的 区别:1.列表可以修改增加删除列表内容,元组不能修改 联系:元组中包含列表的元素,可以修改列表元素. 分析:1.列表:LIST1=[1,2,3,4,5,6 ...
- python列表定义和操作_Python 列表的定义及操作
#列表概念:有序的可变的元素集合 #定义#直接定义 nums = [1,2,3,4,5]#通过range函数构造,python2 和python3 版本之间的差异:#python3 用的时候才会去构造 ...
最新文章
- kali linux网络配置
- R语言在ggplot中使用变量指定柱状图的名称实战
- PHP配置vhost
- 等式成立JAVA_java – 找到两个线性等式成立的整数集
- 【Java】最基本的命令行登录程序Demo
- 小b和灯泡(51Nod-2489)
- 谈一谈对旋转矩阵的理解
- mysql group by_MySQL优化GROUP BY方案
- android小程序内核,小程序的运行环境:iOS(iPhone/iPad)、Android
- Linux安装java(jdk8)
- php宿舍管理系统毕业论文,学生宿舍管理系统(源码+论文)
- html音乐播放器代码大全,关于HTML 音乐播放器代码|音乐播放器网页代码大全(转)...
- IP报文分片抓包简析
- 非透明桥 Non-Transparent Bridging (一)
- html5一个圆圈旋转,Javascript实现可旋转的圆圈实例代码
- Arduino LED闪烁
- 共享网络打印机无法连接计算机,共享打印机连不上的解决方法-电脑自学网
- 命令行常用工具的替代品
- 初识MyBatis Plus
- 准确率99.9%!小猿口算靠AI批改数学题,误判率仅为人工1/10,计算填空应用题都能批改...
热门文章
- 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(4月2日-4月8日)
- 技术支持工程师自测评估下载
- python 内置的os模块将文件夹下所有图片名称加上指定字符
- 将dataGridView数据转成DataTable
- XStream转换Java对象与XML
- Flex与.NET互操作系列文章
- 深入理解 Ribbon-Hystrix-Feign 三者之间的关系(一)
- 解决Git中fatal: refusing to merge unrelated histories
- 面试:史上最全多线程面试题 - (锁内存模型线程)
- 成为优秀程序员的十个Tips