Python常用模块01
一.模块的简单认识
什么是模块。模块就是我们把特定功能的代码进行归类的结果。: ⼀一条代码 < 语句句块 < 代码块(函数, 类) < 模块 我们写py文件也是模块。切记,自己的写的模块,不要和python冲突。
引入模块的方式:
import
模块from xxx import
模块
二.collections 模块
Collections 模块主要封装一些关于集合的相关操作。比如 Iterable, Iterator.
Iterable: 可迭代对象. 内部包含iter()函数
Iterator: 迭代器. 内部包含iter() 同时包含next().
Counter 是一个计数器。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19#统计下字符出现的次数
low:
s = 'sadfsdfsdfdsfsdfghgjghxczvcvcvnjsqero'
dic = {}
for i in s:
dic[i] = dic.get(i,0) +1 #dic.get(i,0) 如果值不存在就返回0
print(dic)
#模块中
nb:
s = 'sadfsdfsdfdsfsdfghgjghxczvcvcvnjsqero'
from collections import Counter
c = Counter(s) #创建一个Counter 对象
print(c)
print(c["s"]) # 用起来和字典差不多
deque
双向队列.
说双向队列之前我们需要了解两种数据结构. 1. 栈, 2. 队列
队列: 先进先出 First In Fisrt out #谁先进去,谁先处理。如买票,抢红包
栈:先进后出 First In Last out #堆? 砌墙的砖头,拆的话会是后面的先出
1 |
|
队列:python提供queue
1 |
|
deque
1 |
|
Namedtuple
命名元祖给元祖内的元素进行命名。比如元祖有两个数,就以坐标形式对元素命名。使用
namedtuple
对元素进行命名1
2
3
4
5
6
7
8
9
10
11
12
13
14
from collections import namedtuple
po = namedtuple('Point',['x','y']) #定义了一个类
p = po(1,2) #命名元祖
print(p)
print(p.x)
print(p.y)
class Point:
def __init__(self,x,y):
self.x = x
self.y = yorderdict
和defaultdict
orderdict
顾名思义. 字典的key默认是无序的. 而OrderedDict
是有序的1
2
3
4
5
6
7
8
9
10
11
12python3.6 以上使用的新算法,来自与pypy,节约20-30%内存
d = {'a':1,'c':2,'b':3}
print(d)
from collections import OrderedDict
od = OrderedDict({'a':1,'c':2,'b':3})
print(od.get('a'))
print(od['b'])defaultdict
可以给字典设置默认值。当key不存在时,直接获取默认值。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
from collections import defaultdict
d = defaultdict(list) # {}list() 必须callable
d['张国荣'] = '倩女幽魂'
print(d['张国荣'])
print(d['宝宝']) # 当key不存在的时候,返回默认值,其实就是callable()
from collections import defaultdict
lst = [1123,132,33,4,4,56,123,100,13223,44,55]
d = defaultdict(list)
for el in lst:
if el > 66:
d['key1'].append(el)
else:
d['key2'].append(el)
print(d)
#以下代码时相同思路。
cars = ["鲁A 10086", "黑A 45678", "黑C 12345", "京B 00001", "京C 78912", "京A 66666"]
locations = {"鲁": "山东", "黑": "黑龙江", "京": "北京", "沪": "上海"}
dic = {}
for car in cars: # 每个车牌子 鲁A 10086
paitou = car[0] # 鲁
# if dic.get(locations[paitou]) == None:
# dic[locations[paitou]] = 1
# else:
# dic[locations[paitou]] = dic[locations[paitou]]+1
# 省份 # "山东": 1, "黑龙江":1
# num = dic.get(locations[paitou], 0)
# num = num + 1
# dic[locations[paitou]] = num
dic[locations[paitou]] = dic.setdefault(locations[paitou], 0) + 1
print(dic)
lst = [1123,132,33,4,4,56,123,100,13223,44,55]
dic = {}
for el in lst:
if el > 66:
dic.setdefault('key1',[]).append(el)
else:
dic.setdefault('key2',[]).append(el)
print(dic)
三.时间模块
时间模块,用与计算时间差,按客户要就展示时间…等
在python中时间分为三种表现形式:
时间戳(timestamp) 时间戳使用的是1970年01月01日 00点00分00秒到现在经历了多少秒用,float表示
1
2import time
print(time.time()) # 1538991585.099336 系统时间戳格式化时间 (strfime) 可根据需要进行任意格式化
1
print(time.strftime('%Y-%m-%d %H:%M:%S')) #年月日,时分秒
日期格式化标准
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
%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 当前时区的名称 %
% %号本身
看⼀下结构化时间:
结构化时间(struct_time)
1
2
3print(time.localtime()) 结果:
time.struct_time(tm_year=2017, tm_mon=05, tm_mday=8, tm_hour=10, tm_min=24, tm_sec=42, tm_wday=0, tm_yday=126, tm_isdst=0)
转换时间
1 |
|
四. random模块
随机相关
1 |
|
五.os模块
所有操作系统相关os模式
1 |
|
Python 的 os 模块封装了常见的文件和目录操作,本文只列出部分常用的方法,更多的方法可以查看官方文档。
1 |
|
参考资料
os.stat()属性解读
1 |
|
六.sys模块
所有和python解释器sys模块
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!