collections  (克来克深思)

Counter
from collections import Counter # 引入模块, 计数器 Counter(康特)
s = 'sadfasdfasdfasdgha'
c = Counter(s)#给了可迭代就能用
print(c)
deque
from collections import deque   引入模块
d = deque() # 创建双向队列
d.append("李茶的姑妈") # 默认在右侧添加
d.append("无双")
d.append("影")
d.append("找到你")
#让悲伤逆流成河, 理查的姑妈, 无双, 影, 找到你
print(d)
d.appendleft("让悲伤逆流成河") # 左侧添加 appendleft(额盘的莱福特)
print(d) print(d.pop()) # 从右边删除
print(d.pop()) # 从右边删除
print(d.popleft()) # 从左边删除 跑破莱福特
print(d.pop()) # 从右边删除
print(d)

  

namedtuple   (内幕的他跑)命名元组
from collections import namedtuple  引入模块
po = namedtuple("Point", ["x", "y"]) # 定义了简单的类-lambda
p = po(1, 2) # 命名元组
print(p)

  

OrderedDict  (奥德DA科特)  字典的key默认是⽆无序的. ⽽而OrderedDict是有序的
py3.6以上使用的是新算法. 来自于pypy. 节约20-30%内存
d = {"a":1,"b":2,"c":3}
print(d)
from collections import OrderedDict
od = OrderedDict({"a":1,"b":2,"c":3})
print(od)
print(od.get("b"))
print(od["b"])

  

defaultdict    (的否特DA科特)可以给字典设置默认值. 当key不存在时. 直接获取默认值:
from collections import defaultdict
d = defaultdict(list) # {} list() 必须是callable
d['刘伟'] = "奥特曼"
print(d['大阳哥']) # 当key不存在的时候. 返回默认值.其实就是callable()
print(d['刘伟']) lst = [11, 22, 33, 44, 55, 66, 77, 88, 99]
dic = {}
for el in lst:
if el > 66:
dic.setdefault("key1", []).append(el)
else:
dic.setdefault("key2", []).append(el)
print(dic) lst = [11, 22, 33, 44, 55, 66, 77, 88, 99]
dd = defaultdict(list)
for el in lst:
if el > 66:
dd['key1'].append(el)
else:
dd['key2'].append(el)
print(dd)

  

---------------------------------------------------------------------------------------------------------------------------

栈和队列

队列: 先进后出.  First In First Out      简称FIFO

import queue  引入模块
q = queue.Queue()#创建队列
q.put('alex')#放入元素
q.put('wupeiqi') print(q.get())获取元素
print(q.get()) 如果阻塞了,在等下一个元素 input()

  

栈:  先进后出.  First In Last Out      简称FILO 

装馒头的桶
1. 入栈
2. 出栈
属性: 1. 列表(容器) 2.大小(size) 3. 栈顶指针(下一个装元素的位置)
class StackFullError(Exception):
pass
class StackEmptyError(Exception):
pass
class Stack:
def __init__(self, size):
self.index = 0 # 栈顶指针
self.size = size
self.lst = [] # 容器 def push(self, el):
if self.index < self.size: # 还没有装满
self.lst.insert(self.index, el)
self.index += 1
else: # 装满了
raise StackFullError("the stack is full!") def pop(self):
if self.index > 0:
self.index -= 1
return self.lst[self.index]
else:
raise StackEmptyError("the stack is empty!")
def clear(self):#清空
self.lst.clear()
self.index = 0
def __sizeof__(self):
return self.index-1
def max(self):
return self.size
def now(self):
return self.index
# 使用
# 1.实例化栈
s = Stack(5)
s.push("馒头1")
s.push("馒头2")
s.push("馒头3")
s.push("馒头4") print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())

  

  

-----------------------------------------------------------------------------------------------------------

time(重点(太木))

当前系统时间 1538970854.5946708 float 时间戳. 给机器用的.数据库有的时候存储的是时间戳

以 1970-01-01 00:00:00 原点. 每一秒一个数字.

%y 两位数的年份表示  (00-99)
%Y 四位数的年份表示 (000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的⽉月份名称
%B 本地完整的⽉月份名称
%c 本地相应的⽇日期表示和时间表示
%j 年年内的⼀一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年年中的星期数(00-53)星期⼀一为星期的开始
%x 本地相应的⽇日期表示
%X 本地相应的时间表示
%z 当前时区的名称
%% %号本身

日期格式化的标准

s = time.strftime("%Y-%m-%d %H:%M:%S")
print(s)

  

import time
18888888888 时间戳 ->结构化时间 -> 格式化时间
把时间戳 -> 结构化时间
f = 18888888888
st = time.localtime(f) 楼口贪慕
print(st)
# 把结构化时间 -> 格式化结构时间
t = time.strftime("%Y/%m/%d %H:%M:%S",st) # f: format 格式化
print(t) # 用户输入了一个时间 2018-09-08 11:22:36 - 存储 时间戳
# 先把格式化时间 -> 结构化时间
s = "2018-09-08 11:22:36"
st = time.strptime(s , "%Y-%m-%d %H:%M:%S") # p:parse 转换
# 结构化时间 -> 转化成时间戳 1536376956
t = time.mktime(st) #
print(t)

  

--------------------------------------------------------------
os模块
os.makedirs('dirname1/dirname2') 可⽣生成多层递归⽬目录
os.removedirs('dirname1') 若⽬目录为空,则删除,并递归到上⼀一级⽬目录,如若也为空,则删
除,依此类推
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空目录,若目录不不为空则⽆无法删除,报错;相当于shell中
rmdir dirname
os.listdir('dirname') 列列出指定目录下的所有文件和子目录,包括隐藏文件,并以列列表方式
打印
os.remove() 删除一个⽂文件
os.rename("oldname","newname") 重命名⽂文件/⽬目录
os.stat('path/filename') 获取⽂文件/⽬目录信息
os.system("bash command") 运⾏行行shell命令,直接显示
os.popen("bash command).read() 运⾏行行shell命令,获取执⾏行行结果
os.getcwd() 获取当前⼯工作⽬目录,即当前python脚本⼯工作的⽬目录路路径
os.chdir("dirname") 改变当前脚本⼯工作⽬目录;相当于shell下cd
# os.path
os.path.abspath(path) 返回path规范化的绝对路路径
os.path.split(path) 将path分割成⽬目录和⽂文件名⼆二元组返回
os.path.dirname(path) 返回path的⽬目录。其实就是os.path.split(path)的第⼀一个元素
os.path.basename(path) 返回path最后的⽂文件名。如何path以/或\结尾,那么就会返回空值。
即os.path.split(path)的第⼆二个元素
os.path.exists(path) 如果path存在,返回True;如果path不不存在,返回False
os.path.isabs(path) 如果path是绝对路路径,返回True
os.path.isfile(path) 如果path是⼀一个存在的⽂文件,返回True。否则返回False
os.path.isdir(path) 如果path是⼀一个存在的⽬目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]]) 将多个路路径组合后返回,第⼀一个绝对路路径之前的参数
将被忽略略
os.path.getatime(path) 返回path所指向的⽂文件或者⽬目录的最后访问时间
os.path.getmtime(path) 返回path所指向的⽂文件或者⽬目录的最后修改时间
os.path.getsize(path) 返回path的⼤大⼩小
# 特殊属性:
os.sep 输出操作系统特定的路路径分隔符,win下为"\\",Linux下为"/"
os.linesep 输出当前平台使⽤用的⾏行行终⽌止符,win下为"\r\n",Linux下为"\n"
os.pathsep 输出⽤用于分割⽂文件路路径的字符串串 win下为;,Linux下为:
os.name 输出字符串串指示当前使⽤用平台。win->'nt'; Linux->'posix'

os模块


-----------------------------------------------------------------
import random
print(random.random()) #  0-1小数  想办法完成[1,100]之间的随机整数
print(random.uniform(1, 3)) # 1-3之间的小数 print(random.randint(1, 36)) # [1,36]随机整数
print(random.randrange(1, 5, 3)) # [1, 5) 步长是3 print(random.choice(["马化腾", ["倚天屠龙记", "天龙八部", "射雕"], "张无忌", "周伯通", "刘伟"]))
# 随机选一个
print(random.sample(["刘伟", "大阳哥", "大猪蹄子", "胡辣汤"], 3))
print(random.sample(list(range(1,37)), 7)) lst = [1,2,3,4,5,5,6,7,8,9,]
random.shuffle(lst) # 洗牌
print(lst)

collections, time, queue的应用的更多相关文章

  1. System.Collections.Generic的各容器类的用法

    演示System.Collections.Generic的各容器类的用法. 包括:Dictionary,KeyValuePair,SortedDic tionary,SortedList,HashSe ...

  2. Java 集合深入理解(9):Queue 队列

    点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 今天心情不太好,来学一下 List 吧! 什么是队列 队列是数据结构中比较重要的一种类型,它支持 FIFO,尾部添加.头部 ...

  3. 【DataStructure】The description of Java Collections Framework

    The Java Connections FrameWork is a group of class or method and interfacs in the java.util package. ...

  4. 队列Queue FIFO先进先出 栈Stack FILO先进后出

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  5. C#:system.collections.generic(泛型)

    1. array是一个固定长度的,如果要动态的存储的话就不行了,虽然 System.Collections.ArrayList(),是一个动态的存储的容器,但是没有对存储中的数据进行一个约束,所以非泛 ...

  6. Python进阶-XI 常用模块之一:collections、time、random、os、sys

    简要介绍一下各种集合: 列表.元组.字典.集合(含frozenset).字符串.堆栈(如手枪弹夹:先进后出).队列(如马克沁机枪的弹夹:先进先出) 1.collections 1)queue 队列介绍 ...

  7. python之re模块补充和其他模块(collection、time、queue、datetime、random)

    目录 re模块补充说明 collections模块 queue模块 time模块 datetime模块 random模块 re模块补充说明 在正则表达式中,'()'的作用是进行分组,但是在re模块中, ...

  8. C# 实时折线图,波形图

    此Demo是采用VS自带的Chart图表控件,制作实时动态显示的折线图,和波形图. 涉及到知识如下: Chart 控件,功能强大,可以绘制柱状图,折线图,波形图,饼状图,大大简化了对图的开发与定制. ...

  9. 最全数据结构详述: List VS IEnumerable VS IQueryable VS ICollection VS IDictionary

    本文对常用的数据结构详述:Array, ArrayList,List,IList,ICollection, Stack, Queue, HashTable, Dictionary, IQueryabl ...

随机推荐

  1. 【Linux】DNS服务-BIND从服务器、缓存服务器及转发服务器配置(三)

    环境 操作系统:CentOS 6.5 DNS软件:bind(安装参照:[Linux]DNS服务-BIND基础配置(二)) BIND从服务器 从服务器就是在bind的主配置文件中添加从域example. ...

  2. POJ 3110 Jenny's First Exam (贪心)

    题意:告诉你n 个科目的考试日期,在考试当天不能复习,每一个科目的最早复习时间不能早于考试时间的t天,每一天你可以复习完一科,也只能复习一科,求最晚的复习时间!. 析:由于题目给定的时间都在1900 ...

  3. POJ 2433 Landscaping (贪心)

    题意:给定一个序列表示一群山,要你保留最多 K 个山峰,最少要削去多少体积和土.一个山峰是指一段连续的相等的区间,并且左边和右边只能比这个区间低,或者是边界. 析:贪心,每次都寻找体积最小的山峰,然后 ...

  4. DOM中的事件对象和IE事件对象

    DOM中的事件对象 IE事件对象 属性/方法 类型 读/写 说明 属性/方法 类型 读/写 说明  bubles Boolean 只读  表明事件是否冒泡  cancleBubble Boolean ...

  5. java术语(PO/POJO/VO/BO/DAO/DTO)

    PO(persistant object) 持久对象在o/r 映射的时候出现的概念,如果没有o/r映射,就没有这个概念存在了.通常对应数据模型(数据库),本身还有部分业务逻辑的处理.可以看成是与数据库 ...

  6. MySQL RR模式下如何加锁

    锁的算法有三种,如下: record lock.gap lock.next_key lock 在不同的隔离级别下,所使用的锁的算法如下: RC:仅有record 锁 RR:有record和next_k ...

  7. SDIBT 2345 (3.2.1 Factorials 阶乘)

    Description N的阶乘写作N!表示小于等于N的所有正整数的乘积.阶乘会很快的变大,如13!就必须用32位整数类型来存储,70!即使用浮点数也存不下了.你的任务是找到阶乘最后面的非零位.举个例 ...

  8. 【王者荣耀之IT大神版】比赛制度说明(匹配赛、排位赛、赏金赛)

    匹配赛(30分钟): 所得金币=6金币/分钟 经验(挂机:玩手机超过30秒): 名次 经验值 胜利条件 失败条件 1 5 提前10min 超出1min 2 4 提前8min 超出3min 3 4 提前 ...

  9. Ubuntu 默认启动到命令行 12.04

    源文链接:http://my.oschina.net/jackguo/blog/85706 代码: sudo gedit /etc/default/grub 引用: GRUB_CMDLINE_LINU ...

  10. 为WinEdt自定义XeLatex快捷键

    没有彻底抛弃Windows很重要的一方面原因,WinEdt + Sumatra PDF对LaTeX支持的太好了(自动补全,反向搜索),而且当遇到复杂公式的时候,mathtype也能帮上大忙. 我一直用 ...