python--内置常用模块
一 . 简单的了解模块
你写的每一个py文件都是一个模块. 还有一些我们一直在使用的模块.
buildins 内置模块. print, input.
random 主要是和随机相关的的内容
random() 随机小数
uninform(a,b) 随机小数
randint(a,b) 随机整数
choice() 随机选择一个
sample() 随机选择多个
shuffle() 打乱

import random
print(random.randint(10,20)) from random import randint
print(randint(10,20)) import random
print(random.randint(10,20)) # 随机整数
print(random.random()) # python中所有随机数的根 随机小数 0-1
print(random.uniform(10,20)) # 10-20的随机小数
lst = ["宝宝", "宝强", "宝浪", "包拯"]
random.shuffle(lst) # 随机打乱顺序
print(lst)
# 从列表中随机选择一个
print(random.choice(["林志玲", "刘一菲", "王昭君", "艾米", "宝宝"]))
print(random.sample(["林志玲", "刘一菲", "王昭君", "艾米", "宝宝"], 3))

二 . 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):
pass
class StackEmptyException(Exception):
pass
class 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 el s = Stack(4)
s.push("笑")
s.push("傲")
s.push("江")
s.push("湖")
print(s.pop()) # 湖
print(s.pop()) # 江
print(s.pop()) # 傲
print(s.pop()) # 笑

队列: 先进先出
Queue

import queue
q = 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 deque d = 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) # 2018
print(t.tm_mon) # 12
print(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
四 . 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 reduce
def func(a, b):
return a + b # 0+1+2+3+4+5+6# 累加 # 会把我们每一个数据交给func去执行, 把默认值作为第一个参数传递给函数
# 第二个参数就是你这个序列中的第一个数据
# 接下来. 把刚才返回的结果作为第一个参数传递个a
# 继续吧刚才的结果给第一个参数. 把第三个数据传递给b
ret = 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 partial def eat(zhushi, fushi):
print(zhushi, fushi)
# 固定函数中某些参数的值
eat2 = partial(eat, fushi="辣鸡爪")
eat2("大米饭") # 大米饭 辣鸡爪
eat2("小米饭") # 小米饭 辣鸡爪
eat2("黑米饭") # 黑米饭 辣鸡爪

python--内置常用模块的更多相关文章
- python内置常用高阶函数(列出了5个常用的)
原文使用的是python2,现修改为python3,全部都实际输出过,可以运行. 引用自:http://www.cnblogs.com/duyaya/p/8562898.html https://bl ...
- day05 模块以及内置常用模块用法
内置常用模块详解: 1 time 2 datetime 3 random 4 os 5 sys 6 shutil 7 shelve 8 xml 9 configparser 10 hashlib ...
- day25 内置常用模块(四): 模块和包
阅读目录: 模块 import from xxx import xxx 包 import from xxx import xxx from xxx import * __init__.p ...
- Python内置OS模块用法详解
大家好,从今天起早起Python将持续更新由小甜同学从初学者的角度学习Python的笔记,其特点就是全文大多由新手易理解的代码与注释及动态演示.刚入门的读者千万不要错过! 很多人学习python,不知 ...
- Python内置标准模块
time 模块 1 >>> import time 2 >>> time.time() 3 1491064723.808669 4 >>> # t ...
- python内置re模块全面实战
目录 一:取消转义 二:python内置模块之re模块 三:常用方法 findall search match 简便 四:常用方法 finditer 匹配文件多情况 五:切割 替换 内置模块 六:分组 ...
- 巨蟒python全栈开发-第23天 内置常用模块2
一.今日主要内容 1.nametuple:(命名元组,本质还是元组) 命名元组=>类似创建了一个类 结构化时间其实是个命名元组 2.os 主要是针对操作系统的 一般用来操作文件系统 os.mak ...
- python之路--内置常用模块
一 . 简单的了解模块 你写的每一个py文件都是一个模块. 还有一些我们一直在使用的模块. buildins 内置模块. print, input. random 主要是和随机相关的的内容 ran ...
- 巨蟒python全栈开发-第22天 内置常用模块1
一.今日主要内容 1.简单了解模块 你写的每一个py文件都是一个模块 数据结构(队列,栈(重点)) 还有一些我们一直在使用的模块 buildins 内置模块.print,input random 主要 ...
- 巨蟒python全栈开发-第24天 内置常用模块3
一. 1.re模块基础知识 2.python模块&re正则模块 3.实战:re模块&python(链家&电影天堂&豆瓣) 复习:上节课重点(1)sys.path 模块的 ...
随机推荐
- [題解]luogu_P1144最短路計數
1.無權圖最短路邊權為1 2.如果兩個點恰好不能被更新(d[y]==d[x]+1)那麼就能通過x的所有最短路到達y,所以ans[y]+=ans[x] 3.如果兩個點不能恰好被更新(d[y]>d[ ...
- ZROI提高组模拟赛05总结
ZROI提高组模拟赛05总结 感觉是目前为止最简单的模拟赛了吧 但是依旧不尽人意... T1 有一半的人在30min前就A掉了 而我花了1h11min 就是一个简单的背包,我硬是转化了模型想了好久,生 ...
- 调试PHP
echo "<br/>"; print_r($array);
- simhash与重复信息识别
在工作学习中,我往往感叹数学奇迹般的解决一些貌似不可能完成的任务,并且十分希望将这种喜悦分享给大家,就好比说:“老婆,出来看上帝”…… 随着信息爆炸时代的来临,互联网上充斥着着大量的近重复信息,有效地 ...
- 如何连接MDB数据,并且获取相关的数据
不说了直接上代码: try{ String str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + address + & ...
- 代码review
对于代码review个人也有些小小的看法: 1.首先我觉得我们所有开发人员要弄明白 现在Code Review 的目的 ,凡事不弄明白目的,无法做好完成一件事情,个人觉得有以下一些目的: a)可以在项 ...
- Android程序中使用iconfont心得
1.关于iconfont iconfont既是icon又是font,具体来说应该是用font形式展现的icon.与传统图片格式的图标不同,这一种图标因为是以字体形式展现的,所以更改大小.颜色.背景颜色 ...
- github入门之配置github本地仓库--2
*前期准备工作 创建github账户 github地址 1.设置SSH_Key ssh-keygen -t rsa -C "你的邮箱" 2.查看秘钥 cat ~/.ssh/id_r ...
- watchguard 软件工程师内部招聘!
作为watchguard正式员工,现发布公司最近的招聘信息,待遇优厚,请符合条件的朋友和我联系并将简历发给我,我会尽早联系公司人力部门. 我的邮件:daibao91888@163.com 博客:htt ...
- root.sh脚本支持checkpoints文件实现重复运行
安装集群GRID/GI一般包括三个过程:首先,运行OUI/RunInstaller输入集群配置信息,其次,拷贝/编译集群文件,最后,以root用户运行root.sh脚本配置集群/启动集群,其中运行ro ...