python之路--内置常用模块,python之路--,1. 简单的了解模块
python之路--内置常用模块,python之路--,1. 简单的了解模块
1. 简单的了解模块
你写的每一个py文件都是一个模块. 还有一些我们一直在使用的模块.
buildins 内置模块. print, input.
random 主要是和随机相关的的内容
random() 随机小数
uninform(a,b) 随机小数
randint(a,b) 随机整数
choice() 随机选择一个
sample() 随机选择多个
shuffle() 打乱
import randomprint(random.randint(10,20))from random import randintprint(randint(10,20))import randomprint(random.randint(10,20)) # 随机整数print(random.random()) # python中所有随机数的根 随机小数 0-1print(random.uniform(10,20)) # 10-20的随机小数lst = ["宝宝", "宝强", "宝浪", "包拯"]random.shuffle(lst) # 随机打乱顺序print(lst)# 从列表中随机选择一个print(random.choice(["林志玲", "刘一菲", "王昭君", "艾米", "宝宝"]))print(random.sample(["林志玲", "刘一菲", "王昭君", "艾米", "宝宝"], 3))
2. Collections
1. Counter 计数器
# from collections import Counter# print(Counter("我我我你你他")) # 计数 Counter({‘我‘: 3, ‘你‘: 2, ‘他‘: 1})# lst = ["jay",‘jay‘,"jay","宝宝","宝宝", "胡辣汤", "上官婉儿", "上官婉儿"]# print(Counter(lst)) # Counter({‘jay‘: 3, ‘宝宝‘: 2, ‘上官婉儿‘: 2, ‘胡辣汤‘: 1})
2. defaultdict 默认值字典
from collections import defaultdict# 默认值字典dd = defaultdict(lambda: ‘武林盟主‘) # callable 可调用的, 字典是空的dic = dd[‘张无忌‘]print(dd) # defaultdict(<function <lambda> at 0x0000007BEA451EA0>, {‘张无忌‘: ‘武林盟主‘})
3. OrderedDict 有序字典
from collections import OrderedDict# 有序字典dic = OrderedDict()dic["笑傲江湖"] = "令狐冲"dic[‘天龙八部‘] = "乔峰"print(dic) # OrderedDict([(‘笑傲江湖‘, ‘令狐冲‘), (‘天龙八部‘, ‘乔峰‘)])print(dic.get("笑傲江湖")) # 令狐冲print(dic.values()) # odict_values([‘令狐冲‘, ‘乔峰‘])print(dic[‘天龙八部‘]) # 乔峰
数据结构(队列, 栈(重点))
栈:先进后出
Stack
# 特点: 先进后出class StackFullException(Exception): passclass StackEmptyException(Exception): passclass Stack: def __init__(self, size): self.size = size self.lst = [] # 存放数据的列表 self.top = 0 # 栈顶指针 # 入栈 def push(self, el): if self.top >= self.size: raise StackFullException("your stack is full!!!!!") self.lst.insert(self.top, el) # 放元素 self.top += 1 # 栈顶指针向上移动一下 # 出栈 def pop(self): if self.top == 0: raise StackEmptyException("your stack is empty!!!!!") self.top-=1 el = self.lst[self.top] return els = Stack(4)s.push("笑")s.push("傲")s.push("江")s.push("湖")print(s.pop()) # 湖print(s.pop()) # 江print(s.pop()) # 傲print(s.pop()) # 笑
队列: 先进先出
Queue
import queueq = queue.Queue()q.put("射")q.put("雕")q.put("英雄")q.put("传")print(q.get()) # 射print(q.get()) # 雕print(q.get()) # 英雄print(q.get()) # 传
双向队列
from collections import dequed = deque() # 创建双向队列d.append("书剑") # 在右侧添加d.append("恩仇")d.append("录")d.appendleft("娃哈哈") # 在左边添加d.appendleft("爽歪歪")d.appendleft("优酸乳")print(d.pop()) # 从右边拿数据 录print(d.pop()) # 从右边拿数据 恩仇print(d.pop()) # 从右边拿数据 书剑print(d.popleft()) # 从左边拿数据 优酸乳print(d.popleft()) # 从左边拿数据 爽歪歪print(d.popleft()) # 从左边拿数据 娃哈哈
3. Time模块
时间有三种:
结构化时间 gmtime() localtime()
时间戳 time.time() time.mktime()
格式化时间 time.strftime() time.strptime()
import time# 时间戳: 从1970-01-01 00:00:00开始计算. 未来存储的时候用是时间戳print(time.time()) # 显示的是从1970-01-01 00:00:00开始计算到现在是多少秒# 格式化时间print(time.strftime("%Y-%m-%d %H:%M:%S")) # 用来显示的 # 2018-12-26 12:38:56# 结构化时间(python的时间)print(time.localtime()) t = time.localtime()print(t.tm_year) # 2018print(t.tm_mon) # 12print(t.tm_mday) # 26
时间转化:
数字 -> 字符串
struct_time = time.localtime(数字)
str = time.strftime("格式", struct_time)
import time # 数据库中存储一个数字,把它还原成我们的格式化时间a = 1541952464# 先把这个时间戳转化成python中的结构化时间t = time.localtime(a) # 东八区时间# 把这个结构化时间转化成格式化时间s = time.strftime(‘%Y-%m-%d %H:%M:%S‘, t)print(s) # 2018-11-12 00:07:44
# 数据库里存储一个数字. 把它还原成我们的格式化时间a = 0 # 可以在范围内随便设# 先把这个时间戳转化成python中的结构化时间t = time.gmtime(a) # 格林尼治时间# 把一个结构化时间转化成格式化时间s = time.strftime("%Y-%m-%d %H:%M:%S", t)print(s) # 1970-01-01 00:00:00
字符串 -> 数字
struct_time = time.strptime(字符串, "格式")
num = time.mktime(struct_time)
无论是由时间戳转化成格式化时间 还是由 格式化时间转化成时间戳都需要经过结构化时间
# 用户输入一个时间,然后把时间转化成时间戳strf = input(‘请输入一个时间:‘) # 2018-12-12 21:12:43# 把字符串转化成结构化时间t = time.strptime(strf,‘%Y-%m-%d %H:%M:%S‘)print(time.mktime(t)) # 1544620363.0
4. functools
wraps 给装饰器中的inner改名字
from functools import wraps # 可以改变一个函数的名字, 注释...def wrapper(fn): @wraps(fn) # 把inner的名字改变成原来的func def inner(*args, **kwargs): print("前") ret = fn(*args, **kwargs) print("后") return ret return inner@wrapper # func = wrapper(func)def func(): print(‘哈哈哈‘)print(func.__name__) # func 如果没有@wraps 打印的就是inner
reduce 归纳.
from functools import reducedef func(a, b): return a + b # 0+1+2+3+4+5+6# 累加# 会把我们每一个数据交给func去执行, 把默认值作为第一个参数传递给函数# 第二个参数就是你这个序列中的第一个数据# 接下来. 把刚才返回的结果作为第一个参数传递个a# 继续吧刚才的结果给第一个参数. 把第三个数据传递给bret = reduce(func, [1,2,3,4,5,6])# 工作流程# func(func(func(0, 1),2),4)print(ret)print(reduce(lambda x, y:x + y, [i for i in range(101)])) # 5050
偏函数 把函数的参数固定.
from functools import partialdef eat(zhushi, fushi): print(zhushi, fushi)# 固定函数中某些参数的值eat2 = partial(eat, fushi="辣鸡爪")eat2("大米饭") # 大米饭 辣鸡爪eat2("小米饭") # 小米饭 辣鸡爪eat2("黑米饭") # 黑米饭 辣鸡爪
python之路--内置常用模块
相关内容
- python-面向对象,,# class Ca
- python *与**,python,python中,在形
- Python-控制流语句,python-流语句,控制流语句在 Pyt
- Python cookbook(数据结构与算法)找出序列中出现次数最多
- Python cookbook(数据结构与算法)将序列分解为单独变量
- Python cookbook(数据结构与算法)筛选及提取序列中元素的
- Python模拟随机游走图形效果示例,python游走
- 深入理解Python中range和xrange的区别,pythonxrange
- Django内容增加富文本功能的实例,django实例
- Python中序列的修改、散列与切片详解,
评论关闭