标准库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列表解析式,生成器,及部分内建函数使用方法...相关推荐

  1. python列表解析式如何使用_python列表推导式操作解析

    python列表推导式操作解析 这篇文章主要介绍了python列表推导式操作解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 基本格式 ​[表达式 ...

  2. python列表的实现原理_python列表推导式原理和使用方法

    偶尔会在python中看见这样一行代码: data = [x**2 for x in range(0, 5)] # 此时data = [0, 1, 4, 9, 16] 如果不知道背后的语法规则,那么很 ...

  3. python中append的用法_Python 列表 append() 使用方法及示例

    Python 列表 append() 使用方法及示例 append()方法将一个项目添加到列表的末尾. append()方法将单个项目添加到列表的末尾. append()方法的语法为:list.app ...

  4. python列表的实现原理_Python列表对象实现原理

    Python 列表对象实现原理 Python 中的列表基于 PyListObject 实现,列表支持元 素的插入.删除.更新操作,因此 PyListObject 是一个变长 对象(列表的长度随着元素的 ...

  5. python列表操作函数大全_Python列表操作函数

    列表可以进行多个数据的存储,同时python中的列表设计非常到位,它可以实现内容动态扩充,可以进行后期数据的删除,这些就需要通过Python提供的列表操作函数来实现了. 对于Python语言而言,开发 ...

  6. python中的列表分片详解_python列表与元组详解实例

    在这章中引入了数据结构的概念.数据结构是通过某种方式组织在一起的数据元素的集合.在python中,最基本的数据结构就是序列.序列中的每个元素被分配一个序号,即元素的位置,也被称为索引.注意:第一个索引 ...

  7. python列表有哪些操作_python列表的基本操作有哪些

    python列表的基本操作有:1.创建列表,只要把逗号分隔的不同的数据项使用方括号括起来:2.添加新的元素:3.遍历列表:4.访问列表中的值:5.从list删除元素. 相关免费学习推荐:python教 ...

  8. python列表到元祖_python列表与元祖

    python 的列表和元素: 共同点:有序的 区别:1.列表可以修改增加删除列表内容,元组不能修改 联系:元组中包含列表的元素,可以修改列表元素. 分析:1.列表:LIST1=[1,2,3,4,5,6 ...

  9. python列表定义和操作_Python 列表的定义及操作

    #列表概念:有序的可变的元素集合 #定义#直接定义 nums = [1,2,3,4,5]#通过range函数构造,python2 和python3 版本之间的差异:#python3 用的时候才会去构造 ...

最新文章

  1. kali linux网络配置
  2. R语言在ggplot中使用变量指定柱状图的名称实战
  3. PHP配置vhost
  4. 等式成立JAVA_java – 找到两个线性等式成立的整数集
  5. 【Java】最基本的命令行登录程序Demo
  6. 小b和灯泡(51Nod-2489)
  7. 谈一谈对旋转矩阵的理解
  8. mysql group by_MySQL优化GROUP BY方案
  9. android小程序内核,小程序的运行环境:iOS(iPhone/iPad)、Android
  10. Linux安装java(jdk8)
  11. php宿舍管理系统毕业论文,学生宿舍管理系统(源码+论文)
  12. html音乐播放器代码大全,关于HTML 音乐播放器代码|音乐播放器网页代码大全(转)...
  13. IP报文分片抓包简析
  14. 非透明桥 Non-Transparent Bridging (一)
  15. html5一个圆圈旋转,Javascript实现可旋转的圆圈实例代码
  16. Arduino LED闪烁
  17. 共享网络打印机无法连接计算机,共享打印机连不上的解决方法-电脑自学网
  18. 命令行常用工具的替代品
  19. 初识MyBatis Plus
  20. 准确率99.9%!小猿口算靠AI批改数学题,误判率仅为人工1/10,计算填空应用题都能批改...

热门文章

  1. 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(4月2日-4月8日)
  2. 技术支持工程师自测评估下载
  3. python 内置的os模块将文件夹下所有图片名称加上指定字符
  4. 将dataGridView数据转成DataTable
  5. XStream转换Java对象与XML
  6. Flex与.NET互操作系列文章
  7. 深入理解 Ribbon-Hystrix-Feign 三者之间的关系(一)
  8. 解决Git中fatal: refusing to merge unrelated histories
  9. 面试:史上最全多线程面试题 - (锁内存模型线程)
  10. 成为优秀程序员的十个Tips