流畅的python和cookbook学习笔记(五)
1.随机选择
python中生成随机数使用random模块。
1.从序列中随机挑选元素,使用random.choice()
>>> import random
>>> values = [1, 2, 3, 4, 5, 6]
>>> random.choice(values)
3
>>> random.choice(values)
3
>>> random.choice(values)
1
>>> random.choice(values)
1
>>> random.choice(values)
4
2.取出指定个数的元素,使用random.sample()
>>> random.sample(values, 2)
[1, 4]
>>> random.sample(values, 2)
[3, 5]
>>> random.sample(values, 3)
[5, 3, 2]
>>> random.sample(values, 3)
[1, 3, 2]
3.打乱序列的顺序,可以用来洗牌,使用random.shuffle()
>>> random.shuffle(values)
>>> values
[2, 4, 5, 3, 6, 1]
>>> random.shuffle(values)
>>> values
[2, 6, 5, 4, 3, 1]
4.生成随机整数,使用random.randint()
>>> random.randint(1, 10)
3
>>> random.randint(1, 10)
10
>>> random.randint(1, 10)
5
5.生成 0 到 1 之间的浮点数,使用random.random()
>>> random.random()
0.31720220264500265
>>> random.random()
0.8230452349376671
>>> random.random()
0.09307172325744872
6.生成随机比特位的整数,使用random.getrandbits()
>>> random.getrandbits(200)
859899606181938256764615251875627706548045135119258688489931
>>> random.getrandbits(200)
582401031226834278134883678914218487507678688169321631685078
2.时间的转换
1.python中使用datetime模块来转换时间。
>>> from datetime import timedelta
>>> a = timedelta(days = 2, hours = 6)
>>> b = timedelta(hours = 4.5)
>>> c = a + b
>>> c.days
2
>>> c.seconds
37800
>>> c.seconds / 3600
10.5
>>> c.total_seconds() / 3600
58.5
表示特定的日期和时间。
>>> from datetime import datetime
>>> a = datetime(2017, 9, 8)
>>> print(a + timedelta(days=2))
2017-09-10 00:00:00
>>> b = datetime(2017, 9, 22)
>>> d = b - a
>>> d.days
14
>>> now = datetime.today()
>>> print(now)
2017-09-08 20:09:56.904169
>>> print(now + timedelta(minutes=10))
2017-09-08 20:19:56.904169
2.使用dateutil模块,可以处理不同月份中的天数。datetime不能处理月份。
>>> from dateutil.relativedelta import relativedelta
>>> a = datetime(2017, 9, 8)
>>> a + relativedelta(months=1)
datetime.datetime(2017, 10, 8, 0, 0)
>>> a + relativedelta(months=4)
datetime.datetime(2018, 1, 8, 0, 0)
>>> b = datetime(2017, 11, 11)
>>> d = b - a
>>> d
datetime.timedelta(64)
>>> d = relativedelta(b, a)
>>> d
relativedelta(months=+2, days=+3)
>>> d.months
2
>>> d.days
3
3.把字符串转换为时间,使用datetime.strptime(),把时间转化为字符串使用datetime.strftime()
>>> from datetime import datetime
>>> text = '2017-9-8'
>>> y = datetime.strptime(text, '%Y-%m-%d')
>>> z = datetime.now()
>>> diff = z - y
>>> diff
datetime.timedelta(0, 73494, 826144)
>>> y
datetime.datetime(2017, 9, 8, 0, 0)
>>> z
datetime.datetime(2017, 9, 8, 20, 24, 54, 826144)
>>> nice_z = datetime.strftime(z, '%A %B %d %Y')
>>> nice_z
'Friday September 08 2017'
流畅的python和cookbook学习笔记(五)的更多相关文章
- 流畅的python和cookbook学习笔记(七)
1.读写压缩数据文件 使用 gzip 和 bz2 模块来读写压缩文件,不过需要注意文件的模式,默认格式为二进制. # 读取压缩文件 import gzip with gzip.open('somefi ...
- 流畅的python和cookbook学习笔记(九)
1.减少可调用对象的参数个数,使用functools.partial冻结参数 使用functools.partial(),可以固定一个或者多个值,减少调用参数. >>> def sp ...
- 流畅的python和cookbook学习笔记(八)
1.函数的默认参数必须不可变 如果函数的默认参数为可变的对象,那么默认参数在函数外被修改也会影响到函数本身的. >>> def spam(a, b=None): # b要为不可变参数 ...
- 流畅的python和cookbook学习笔记(六)
1.同时迭代多个序列(zip(函数)) 使用zip()函数可以同时迭代多个序列. >>> X = [1, 2, 3, 4, 5, 6] >>> Y = [121, ...
- 流畅的python和cookbook学习笔记(四)
1.数字的四舍五入 对于简单的舍入运算,使用内置的 round(value, ndigits) 函数即可. round 函数返回离它最近的偶数.也就是说,对 1.5 或者 2.5 的舍入运算都会得到 ...
- 流畅的python和cookbook学习笔记(三)
1.双向队列 collections.deque 类(双向队列)是一个线程安全.可以快速从两端添加或者删除元素的数据类型. rotate和popleft操作,rorate可以把前后元素换位.pople ...
- 流畅的python和cookbook学习笔记(二)
1.元组拆包和解压序列赋值 任何的序列 (或者是可迭代对象) 可以通过一个简单的赋值语句解压并赋值给多个 变量.唯一的前提就是变量的数量必须跟序列元素的数量是一样的. 1.平行赋值: >> ...
- 流畅的python和cookbook学习笔记(一)
1.数据结构 1.1 内置序列类型 四种序列类型: 1.容器序列:list.tuple和collections.deque 2.扁平序列:str.bytes.bytearray.memoryview和 ...
- python3.4学习笔记(五) IDLE显示行号问题,插件安装和其他开发工具介绍
python3.4学习笔记(五) IDLE显示行号问题,插件安装和其他开发工具介绍 IDLE默认不能显示行号,使用ALT+G 跳到对应行号,在右下角有显示光标所在行.列.pycharm免费社区版.Su ...
随机推荐
- [ActionScript 3.0] 判断XML属性是否存在
在as3中判断xml节点是否存在以及判断xml某节点是否存在某属性可用下面方法: if(xml.hasOwnProperty("frameRate")){ trace(" ...
- 省选后CTS/APIO前文化课划水记
目前没有什么明确的目标,所以就叫划水吧. 第一周 4.9 (Tue) 早上 10:00 到学校,然后去仓库找了张桌子,搬到教室,开始自习生活. 拿出"必背古诗文",发现除了< ...
- 免费观看vip/要劵的电影
免费观看vip/要劵的电影 1.在爱奇艺/腾讯视频中复制电影的连接 2.复制连接到这个网站中(http://www.qmaile.com/) 3.粘贴路径到这个网站相应的位置 4.点击go ,等待解析 ...
- 基础篇:1)时代的发展与结构设计--3d与2d设计的变迁
本章目的:机械设计需要追寻时代的脚步. 1.机械作图时代的划分 这张图是作者个人对机械作图发展的简单划分,并非哪个网站的数据.所以粗糙或错误请海涵. 2.2d作图时代 纯2d时代中,工程师开只绘制二维 ...
- google浏览器安装不上的绝望经历
手贱把google的一些文件删除了,整个浏览器都没法打开 决定重装下,但是连卸载的功能都无法打开了 于是决定上网重新下载了个安装包,发现安装包都打不来 很绝望,查了很多资料 很多人说要删除注册表的东西 ...
- supervisor使用小记
最近使用supervisor部署爬虫,百度了很多,磕磕绊绊自己也算是用起来了,以下是整理的使用情况. 第一步: 下载安装supervisor 使用的ubuntu16.04,直接 sudo apt-ge ...
- FreeRTOS-03中断测试
根据正点原子FreeRTOS视频整理 单片机:STM32F207VC FreeRTOS源码版本:v10.0.1 portDISABLE_INTERRUPTS(); /*关中断*/portENABLE_ ...
- easyUI----纵向合并单元格
使用Easyui-DataGrid过程用.做统计/报表等时经常会使用到合并单元格,原生态Easyui-DataGrid没有合并单元格的属性或方法. 解决方案: 代码一 onLoadSuccess: f ...
- Anaconda环境变量配置问题解决
(右键)我的电脑==>属性==>高级系统设置==>环境变量==>Path 按照下图添加: 总共4个,如果出现“此环境变量太大...”,删除或者缩短其他环境变量地址. 然后重新打 ...
- Apache和Tomcat的整合过程(转载)
一 Apache与Tomcat比较联系 apache支持静态页,tomcat支持动态的,比如servlet等. 一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由 ...