day19其他模块
collections模块
详细内容 http://www.cnblogs.com/Eva-J/articles/7291842.html
1.namedtuple: 生成可以使用名字来访问元素内容的tuple
from collections import namedtuple Point = namedtuple('changfx',['x','y','z']) # 变量 = namedtuple('名字',[元祖元素]) 这里以一个长方形为例子
p = Point(5,6,7)
print(p)
print(p.x)
print(p.y)
print(p.z) changfx(x=5, y=6, z=7)
5
6
7 Puke = namedtuple('puke',['color','num'])
p1 = Puke('红桃',12)
print(p1)
print(p1.color)
print(p1.num)
puke(color='红桃', num=12)
红桃
12
2.queue:队列
import queue
# 创建基本队列
# queue.Queue(maxsize=0)创建一个队列对象(队列容量),若maxsize小于或者等于0,队列大小没有限制
Q = queue.Queue(10)
print(Q)
Q.put(4) # 插入队列元素
Q.put([5,6]) # 队列一次只可以插入一个元素,此处列表为一个元素
print(Q.queue) # 查看队列所有元素
print(Q.qsize()) # 查看队列大小
print(Q.empty()) # 查看队列是否空
print(Q.full()) # 查看对了是否满
print(Q.get()) # 取出队列元素,先进先出原则 <queue.Queue object at 0x000001A694D402B0>
deque([4, [5, 6]])
2
False
False
4
双端队列
使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低。
deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:
from collections import deque
dq = deque([1,2])
dq.append('a') # 从后面放数据 [1,2,'a']
dq.appendleft('b') # 从前面放数据 ['b',1,2,'a']
dq.insert(2,3) # 索引位2插入3 ['b',1,3,2,'a']
print(dq.pop()) # 从后面取数据
print(dq.popleft()) # 从前面取数据
print(dq) a
b
deque([1, 3, 2])
有序字典 OrderdDict
使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。
如果要保持Key的顺序,可以用OrderedDict
:
from collections import OrderedDict
# 普通方法字典创建
od = {'a':1,'b':2,'c':3}
od1 = dict([('a',1),('b',2),('c',3)])
# 有序字典创建
od2 = OrderedDict([('a',1),('b',2),('c',3)])
print(od)
print(od1)
print(od2)
print(od2['a'])
for k in od2.items() :
print(k) {'a': 1, 'b': 2, 'c': 3}
{'a': 1, 'b': 2, 'c': 3}
OrderedDict([('a', 1), ('b', 2), ('c', 3)])
1
('a', 1)
('b', 2)
('c', 3)
默认字典 defaultdict
有如下值集合 [
11
,
22
,
33
,
44
,
55
,
66
,
77
,
88
,
99
,
90.
..],将所有大于
66
的值保存至字典的第一个key中,将小于
66
的值保存至第二个key的值中。
即: {
'k1'
: 大于
66
,
'k2'
: 小于
66
}
values = [11, 22, 33,44,55,66,77,88,99,90] my_dict = {} for value in values:
if value>66:
if my_dict.has_key('k1'):
my_dict['k1'].append(value)
else:
my_dict['k1'] = [value]
else:
if my_dict.has_key('k2'):
my_dict['k2'].append(value)
else:
my_dict['k2'] = [value] 原生字典解决方法
from collections import defaultdict values = [11, 22, 33,44,55,66,77,88,99,90] my_dict = defaultdict(list) for value in values:
if value>66:
my_dict['k1'].append(value)
else:
my_dict['k2'].append(value) defaultdict字典解决方法
使用dict
时,如果引用的Key不存在,就会抛出KeyError
。如果希望key不存在时,返回一个默认值,就可以用defaultdict
:
>>> from collections import defaultdict
>>> dd = defaultdict(lambda: 'N/A')
>>> dd['key1'] = 'abc'
>>> dd['key1'] # key1存在
'abc'
>>> dd['key2'] # key2不存在,返回默认值
'N/A'
time模块
import time
# time.sleep(10) # 程序休息 秒
print(time.time()) # 时间戳时间,返回一个以秒为单位浮点数
print(time.strftime("%Y-%m-%d %X")) # 字符串格式化时间
print(time.strftime("%Y:%m:%d %a %H:%M:%S")) # %a 显示星期几
print(time.localtime()) # 结构化时间 print(time.mktime(time.localtime()))
# print(time.strftime('2000-12.31','%Y-%m.%d'))
print(time.asctime()) # 显示详细时间
print(time.ctime()) ### 时间戳转换成结构化时间
t = time.time()
print(time.localtime(t))
print(time.gmtime(t))
### 结构化时间转换成时间戳
t2 = time.localtime(t)
print(time.mktime(t2))
### 结构化数据转换成 字符串格式化时间
t3 = time.strptime('2000-12.30','%Y-%m.%d') # 字符串转结构化
print(t3)
t4 = time.strftime('%Y:%m:%d %H:%M:%S',time.localtime()) # 结构化数据转字符串格式化数据
print(t4)
random模块
import random # 随机小数
ret1 = random.random() # 大于0小于1的小数
print(ret1)
ret2 = random.uniform(1,3) # 大于1小于3的小数
print(ret2) # 返回整数
ret3 = random.randint(1,5) # 大于1小于等于5之间的整数
print(ret3)
ret4 = random.randrange(1,10,2) # 大于1小于10的奇数
print(ret4) # 随机一个返回
ret5 = random.choice(['a','b',1,2]) # 接收一个列表,随机返回
print(ret5) # 随机多个数返回
ret6 = random.sample([1,2,3,4,5],3) # 接收一个列表,随机返回多个数组成一个列表
print(ret6) # 打乱列表顺序
lst = [1,2,3,4,5,6,7,8,9]
random.shuffle(lst)
print(lst) # 打乱顺序,洗牌功能
day19其他模块的更多相关文章
- python学习 day19 configparser模块 os模块 subprocess模块
上周五回顾 logging 用于记录日志 四种核心角色: 生成器Logger 过滤器Filter 处理器Handler 格式化处理器 Formatter logging.info.debug 使用默认 ...
- day19 python模块 json模块 pickle模块
day19 python 一.序列化模块 序列类型: 列表 字符串 元组 bytes 序列化: 特指字符串和bytes, 就是把其他的数据类型转化成序列的数据类型的过程 dic = ...
- day19:os模块&shutil模块&tarfile模块
os模块:对系统进行操作(6+3) system popen listdir getcwd chdir environ / name sep linesep import os #### ...
- day19:常用模块(collections,time,random,os,sys)
1,正则复习,re.S,这个在用的最多,re.M多行模式,这个主要改变^和$的行为,每一行都是新串开头,每个回车都是结尾.re.L 在Windows和linux里面对一些特殊字符有不一样的识别,re. ...
- day19常用模块2
常用模块21 shelve模块 也是一种序列化方式 使用方法 1.open sl = shelve.open("shelvetest.txt") ...
- os模块、os.path模块、shutil模块、configparser模块、subprocess模块
一.os模块 os指的是操作系统 该模块主要用于处理与操作系统相关的操作,常用的是文件操作(读.写.删.复制.重命名). os.getcwd() 获取当前文件所在的文件夹路径 os.chdir() ...
- os模块,os.path模块,subprocess模块,configparser模块,shutil模块
1.os模块 os表示操作系统该模块主要用来处理与操作系统相关的操作最常用的文件操作打开 读入 写入 删除 复制 重命名 os.getcwd() 获取当前执行文件所在的文件夹路径os.chdir(&q ...
- os模块-subprocess 模块- configpaser 模块
一. os 模块 主要用于处理与操作系统相关操作,最常用文件操作 使用场景:当需要操作文件及文件夹(增,删,查,改) os.getcwd() 获取当前工作目录 os.chdir('dirname') ...
- python之路——19
王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594 复习 1.正则表达式 1.字符组 2.元字符 \w \d \s 匹配任意字母数字下划线 数字 空格 \W \ ...
随机推荐
- C++:普通变量C++命名规则
C++提倡使用拥有一定意义的变量名,使程序代码更有阅读性,命名是必须使用的几种简单的C++命名规则: 命名时只能使用:字母字符.数字和下划线(_); 第一个字符不能是数字: 区分大小写(C++对大小写 ...
- gzy的摄影梦
好像当身高180的摄影师啊. 记录一下素材,等自己有相机了,就一一实现. 竟然有人在看哎. 一袭红衣的女子,将手伸出窗外,开心的看这漫天大雪. 今天的晚霞,近处是蓝色,颜色逐渐变淡,一直延伸到远处.( ...
- thinkphp5: 循环输出表格,并固定表格单元宽度(过长省略号)
html: <table class="table table-striped" style='table-layout:fixed;'> <thead clas ...
- Exp6 信息收集与漏洞扫描
一.实践过程 1.信息收集 1.1 通过DNS和IP查询目标网站的信息 (1)whois命令用来进行域名注册信息查询,可查询到3R注册信息,包括注册人的姓名.组织和城市等信息. whois baidu ...
- js/vue图片压缩
js版 新建compressImage.js,内容如下: // 将base64转换为blob(有需要可加上,没需要可不加) function convertBase64UrlToBlob(urlDat ...
- HDU 2717(* bfs)
题意是在一个数轴上,每次可以一步到达当前位置数值的 2 倍的位置或者数值 +1 或数值 -1 的位置,给定 n 和 k,问从数值为 n 的位置最少多少步可以到达数值为 k 的位置. 用广搜的方法,把已 ...
- 使用百度云 BOS 和 C# SDK 开发数据存储
Ø 简介 本文主要介绍如何使用百度云的 C# SDK 操作 BOS(Baidu Object Storage/百度对象存储),以及常见问题和解决办法.本文将以以下几点展开学习: 1. 基本介绍 ...
- ArcGIS——2015年安徽各市GDP总量分级图(3等级)
- HttpUtility.UrlEncode()关于空格的编码问题
因为 HttpUtility.UrlEncode 在 Encode 的时候, 将空格转换成加号"+", 在 Decode 的时候将"+"号转为空格, 但是浏览器 ...
- JavaFX - 富互联网应用
JavaFX教程™ --必看https://www.yiibai.com/javafx /================= 富互联网应用 是那些提供与Web应用程序类似的功能,并可作为桌面应用程序体 ...