标准库datetime

datetime模块

对日期、时间、时间戳的处理

datetime类

类方法

today() 返回本地时区当前时间的datetime对象

now(tz=None) 返回当前时间的datetiem对象,时间到微秒,如果tz为None,返回和today()一样

utcnow() 没有时区的当前时间

formtimestamp(timestamp, tz= None)从一个时间戳返回一个datetime对象

datetime对象

timestamp() 返回一个到微妙的时间戳

时间戳:格林威治时间1970年1月1日0时到现在的秒数

datetime对象

构造方法 datetime.datetime(2016,12,6,16,29,43,79043)

year、month、day、hour、minute、second、microsecond,取datetime对象的年月日时分秒及微妙

weekday() 返回星期的天,周一0,周日6

isoweedday() 返回星期的天,周一1,周日7

date() 返回日期date对象

time() 返回时间time对象

replace() 修改并返回新的时间

isocalendar() 返回一个三元组(年、周数、周的天)

日期格式化

类方法 strptime(date_string,format),返回datetime对象

对象方法 strftime(format),返回字符串

字符串format函数格式化

importdatetime

dt= datetime.datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M")print(dt.strftime("%Y-%m-%d %H:%M:%S"))print("{0:%Y}/{0:%m}/{0:%d} {0:%H}::{0:%M}::{0:%S}".format(dt))

tiemdelta对象

datetime2 = datetime1 + tiemdelta

datetime2 = datetime1 - tiemdelta

tiemdelta = datetime1 - datetime2

构造方法

datetime.timedelta(days=0,seconds=0,microseconds=0,milliseconds=0,minutes=0,hours=0,weeks=0)

year = datetime.timedelta(days = 365)

total_seconds() 返回时间差的总秒数

标准库time

time

time.sleep(secs) 将调用线程挂起指定的秒数

列表解析

1、生产一个列表,元素0~9,对每个元素自增1后求平方返回新列表

#常规写法

lst =[]for a in range(10):

lst.append((a+1)**2)print(lst)#列表解析

lst=[(a+1)**2 for a in range(10)]print(lst)

语法:

[返回值 for 元素 in 可迭代对象 if 条件]

使用中括号[],内部是for 循环,if条件语句可选

返回一个新的列表

列表解析式是一种语法糖

编译器会优化,不会因为简写而影响效率,反而因优化提高了效率

减少程序员工作量,减少出错

简化代码,但可读性增强

举例:

获取10以内的偶数

even = [x for x in range(10) if x%2==0]print(even)

有这样的赋值语句newlist = [print(i) for i in range(10)] 请问打印出什么?   newlist结果是None

获取20以内的偶数,如果同时3的倍数也打印[i for i in range(20) if i%2==0 elif i%3==0]   可以

生成器表达式

语法:

(返回值 for 元素 in 可迭代对象 if 条件)

列表解析式的中括号换成小括号就行了

返回一个生成器

和列表解析器的区别

生成器表达式是按需计算(惰性计算、延迟计算)需要的时候才计算值

列表解析式是立即返回值

生成器

可迭代对象

迭代器

举例:

生成器:

g = ("{:04}".format(i) for i in range(1,11))

next(g) #判断是否是迭代器for x ing:print(x)print('~~~~~~~~~~~~')for x ing:print(x)

#执行结果

0002 0003 0004 0005 0006 0007 0008 0009 0010 ~~~~~~~~~~~~

总结:

延迟计算

返回迭代器,可以迭代

从前到后走一遍后,不能回头

列表解析式:

g = ["{:04}".format(i) for i in range(1,11)]for x ing:print(x)print('~~~~~~~~~~~~')for x ing:print(x)#执行结果

0001

0002

0003

0004

0005

0006

000700080009

0010

~~~~~~~~~~~~

0001

0002

0003

0004

0005

0006

000700080009

0010

总结

立即计算

返回的不是一个迭代器,返回可迭代对象列表

从前到后走完一遍后,可以重新回头迭代

it = (print("{}".format(i+1)) for i in range(2))

first=next(it)

second=next(it)#val = first + second #报错,因为print给it的结果是None None+None

#正确

it= (i+1 for i in range(2))

first=next(it)

second=next(it)

val= first +secondprint(val)

生成器表达式和列表解析式对比

计算方式

生成器表达式延迟计算,列表解析式立即计算

内存占用

单从返回值本身来说,生成器表达式省内存,列表解析式返回新的列表

生成器没有数据,内存占用极少,但是使用的时候,虽然一个个返回数据,但是合起来占用的内存也差不多

列表解析式构造新的列表需要占用内存

计算速度

单从计算时间看,生成器表达式耗时非常短,列表解析式耗时长

但是生成器本身并没有返回任何值,只返回了一个生成器对象

列表解析式构造并返回了一个新的列表

集合解析式

语法:

{返回值 for 元素 in 可迭代对象 if 条件}

列表解析式的中的中括号换成大括号{}

立即返回一个集合

用法:

{(x,x+1) for x in range(10)}

{[x] for x in range(10)}  #包括  列表不能hash

字典解析式

语法:

{返回值 for 元素 in 可迭代对象 if 条件}

列表解析式的中括号换成大括号{}

使用key:value形式

立即返回一个字典

用法:

{x:(x,x+1) for x in range(10)}

{x:[x,x+1] for x in range(10)}

{(x,):[x,x+1] for x in range(10)}

{[x]:[x,x+1] for x in range(10)} # 包括   列表不可hash

{chr(0x41+x):x**2 for x in range(10)}  #这是生产大写字母

{str(x):y for x in range(3) for y in range(4)}  #输入 {'0': 3, '1': 3, '2': 3}   因为字典去重

python直接使用大括号生成_Python 解析式、生成器相关推荐

  1. python可视化界面自动生成_python生成界面

    广告关闭 云服务器1核2G首年99年,还有多款热门云产品满足您的上云需求 前言对于一些 python 脚本,我们想把它打包给其他人使用,不是黑色的命令行框,而是打包成一个有界面的程序包给别人,让普通用 ...

  2. python括号生成_Python括号生成器的问题

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  3. python中文词云生成_Python 词云生成

    图片来自网络所谓"词云"就是对网络文本中出现频率较高的"关键词"予以视觉上的突出,形成"关键词云层"或"关键词渲染",从 ...

  4. python二维高斯分布生成_python 多维高斯分布数据生成方式

    我就废话不多说了,直接上代码吧! import numpy as np import matplotlib.pyplot as plt def gen_clusters(): mean1 = [0,0 ...

  5. python数据框循环生成_python - 如何在 Pandas 的for循环迭代中创建多个数据框?

    我需要在熊猫中创建一个函数,该函数将单个数据框作为输入,并根据特定条件返回多个数据框作为输出. (请检查下面的示例以了解情况).我很难弄清楚如何做.我需要一些专家的编码建议. 范例1: 输入= 100 ...

  6. python生成列表_python列表生成器与生成器

    列表生成器是python内置的非常简单却非常强大的. 生成一个列表[1,2,3,4]可以用list(range(1,5)) 列表生成器的应用 如果上面的公式加上判断,就可以筛选出想要的结果,比如仅需要 ...

  7. 利用python可以做什么菜_python 爬取菜单生成菜谱,做饭买菜不用愁

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:木下瞳 转载:python 爬取菜单生成菜谱,做饭买菜不用愁​mp. ...

  8. python读xml文件生成头文件_Python根据指定文件生成XML的方法

    因项目需要根据指定格式的文件生成XML标注文件,可以方便使用LabelImg打开进行编辑和查看.其原始文件默认使用逗号进行分隔,如下所示: 第1个值:原始图片中切图小文件,以AIpng_x,其中x代表 ...

  9. python中的random模块_Python内置random模块生成随机数的方法

    本文我们详细地介绍下两个模块关于生成随机序列的其他使用方法. 随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的ran ...

  10. python 双色球数学组合公式_Python实现的双色球生成功能示例

    本文实例讲述了Python实现的双色球生成功能.分享给大家供大家参考,具体如下: 最近学习Python的Random函数,就顺手写一个随机数的双色球程序,开发环境:python2.7 , 附上源代码如 ...

最新文章

  1. druid+spring配置
  2. 华为rh5885服务器oid_华为RH5885H v3机架服务器RAID配置实例
  3. spark mllib源码分析之DecisionTree与GBDT
  4. CentOS赋予一个普通用户root权限
  5. 不用long的危害(记洛谷P5534题的WA经历,Java语言描述)
  6. Java基础提高学习笔记2
  7. 摘抄:不注明来源,就是违反契约
  8. gomod下导入模块的方法
  9. 计算机上面的用户帐户怎么删除,怎么删除用户帐户的教程详解【图解】
  10. codeforces A. Statues
  11. consul - Go服务发现、配置管理中心服务
  12. 解读 《The Curious Case of Neural Text Degeneration 》 论文 笔记
  13. 通过域名访问路由器配置界面的功能实现
  14. VS2013使用教程总结(3)---修改VA的注释
  15. OpenGL学习笔记:矩阵变换
  16. Tkinter 极简例子——Event篇
  17. osx snow leopard下用homebrew 安装php5.3 + php-fpm
  18. ffmpeg —— v4l2录制h264视频文件(边采集边转码)
  19. excel怎么更改坐标轴刻度_excel数值坐标轴刻度(excel表格插入图表里坐标轴的刻度能自定义设置吗)...
  20. 使用ECShop搭建外贸站多国货币切换功能

热门文章

  1. Windows语言栏不见了,解决办法。任务栏的语言栏没了、不显示了。语言栏异常导致不能输入中文。默认中文输入法设置。
  2. 能够在乱世中_乱世中
  3. Excel2010创建包含数据有效性的xls文件,再打开时有效性变无效
  4. 阿里巴巴校招实习面试
  5. 海思MPP模块视频缓冲池
  6. SonarQube扫描的Bug、漏洞以及异味的修复(持续更新)
  7. C语言实现:输出明天的日期
  8. 计算机应用基础制作新春贺卡图片,WORD制作新年贺卡和个人简历大学计算机基础课程设计报告书...
  9. 常用jquery方法 总结
  10. [数据可视化] 折线图(Line Chart)