python基础知识(七)常用模块----(二)

(七)常用模块----(二)

目录

(七)常用模块----(二)

7.1collections模块

7.2时间模块


7.1collections模块

 collections模块,增加了除了dict、set、list、tuple以外的一些特殊的容器类型,分别是:
a. Counter:计数器,用于统计元素的数量,是字典的子类
b. OrderDict:有序字典,是字典的子类
c. defaultdict:带有默认值的字典
d. namedtuple:可命名元组,通过名字来访问元组元素
e. deque :双向队列,队列两端可以入队,也可以出队

Counter:用来计数

from collections import Counter
c = Counter('aaaasssxdcd')
print(c)#Counter({'a': 4, 's': 3, 'd': 2, 'x': 1, 'c': 1})

OrderDict:使字典的keys有序

dic = dict([('a',1),('b',2),('c',3)])
print(dic)

from collections import OrderedDict
dic = OrderedDict([('a',1),('b',2),('c',3)])
print(dic) 

'''
普通字典现在规定也是有序
{'a': 1, 'b': 2, 'c': 3}
OrderedDict([('a', 1), ('b', 2), ('c', 3)])
'''

defaultdict:带有默认值的字典

from collections import defaultdict
dic = defaultdict(list)
dic['k']
print(dic)
dic['k'].append('1')
dic['k'].append('2')
print(dic)
dic = defaultdict(tuple)
dic['k']
print(dic)
'''
defaultdict(<class 'list'>, {'k': []})
defaultdict(<class 'list'>, {'k': ['1', '2']})
defaultdict(<class 'tuple'>, {'k': ()})
'''

例题:1.大于66存在‘K1’,小于66存在'K2'

from collections import defaultdict

values = [11, 22, 33,44,55,66,77,88,99,90]

dic = defaultdict(list)

for value in  values:
    if value>66:
        dic['k1'].append(value)
    else:
        dic['k2'].append(value)
print(dic)
#defaultdict(<class 'list'>, {'k2': [11, 22, 33, 44, 55, 66], 'k1': [77, 88, 99, 90]})

例题2.使字典默认返回一个数字

from collections import defaultdict
d = defaultdict(lambda : 5)
print(d['k'])

namedtuple:命名元组

from collections import namedtuple
Point = namedtuple('point',['x','y','z'])
p1 = Point(1,2,3)
p2 = Point(3,2,1)
print(p1.x)
print(p1.y)
print(p1,p2)
'''
1
2
point(x=1, y=2, z=3) point(x=3, y=2, z=1)
'''

deque:双段队列

from collections import deque
dq = deque()
dq.append('a')   # 从后面放数据  ['a']
dq.appendleft('b') # 从前面放数据 ['b','a']
dq.insert(2,3)    #第二个位置插入3['b',3,'a']
print(dq.pop())      # 从后面取数据
print(dq.pop())      # 从后面取数据
print(dq.popleft())  # 从前面取数据
print(dq)
'''
3
a
b
deque([])
'''

7.2时间模块

格式化时间 Fomat string —— 字符串: 给人看的 2019-04-21

时间戳时间 timestamp  —— float时间 : 给计算机看的 从1970年1月1日00:00按秒计算

结构化时间 struct_time—— 元祖 :给计算用的

格式化符号
%y两位数的年份表示(00-99)
%Y四位数的年份表示(000-9999)
%m月份(01-12)
%d月内中的一天(0-31)
%H24小时制小时数(0-23)
%I12小时制小时数(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

当前时区的名称

%%%号本身
索引(Index)属性(Attribute)值(Values)
0tm_year(年)比如2011
1tm_mon(月)1 - 12
2tm_mday(日)1 - 31
3tm_hour(时)0 - 23
4tm_min(分)0 - 59
5tm_sec(秒)0 - 60
6tm_wday(weekday)0 - 6(0表示周一)
7tm_yday(一年中的第几天)1 - 366
8tm_isdst(是否是夏令时)默认为0

import time
#时间戳
print(time.time())

#格式化时间
print(time.strftime("%Y-%m-%d %a %H:%M:%S"))  #year month day HOUR MINUTE SECOND
print(time.strftime("%Y/%m/%d %H:%M:%S"))  #year month day HOUR MINUTE SECOND
print(time.strftime("%m-%d %H:%M:%S"))  #year month day HOUR MINUTE SECOND
print(time.strftime("%H:%M:%S"))  #year month day HOUR MINUTE SECOND
print(time.strftime("%H:%M"))  #year month day HOUR MINUTE SECON

#结构化时间
struct_time = time.localtime()
print(struct_time)
print(struct_time.tm_year)
#time.struct_time(tm_year=2019, tm_mon=4, tm_mday=21, tm_hour=9, tm_min=36, tm_sec=29, tm_wday=6, tm_yday=111, tm_isdst=0)
#2019

 

import time
# 时间戳--->结构化时间
t = time.time()
print(t)
print(time.localtime(3000000000))
print(time.gmtime(t))

#结构化时间--->时间戳
print(time.mktime(time.localtime()))

'''
1555811795.531471
time.struct_time(tm_year=2065, tm_mon=1, tm_mday=24, tm_hour=13, tm_min=20, tm_sec=0, tm_wday=5, tm_yday=24, tm_isdst=0)
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=21, tm_hour=1, tm_min=56, tm_sec=35, tm_wday=6, tm_yday=111, tm_isdst=0)
1555811795.0
'''
##字符串时间-->结构化时间
print(time.strptime('2000-12.31','%Y-%m.%d'))

#结构化时间-->字符串时间
print(time.strftime('%m/%d/%Y %H:%M:%S',time.localtime(3000000000)))

'''
time.struct_time(tm_year=2000, tm_mon=12, tm_mday=31, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=366, tm_isdst=-1)
01/24/2065 13:20:00
'''

#结构化时间 --> %a %b %d %H:%M:%S %Y串
#time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串
print(time.asctime())
print(time.asctime(time.localtime(1500000000)))
#时间戳 --> %a %b %d %H:%M:%S %Y串
#time.ctime(时间戳)  如果不传参数,直接返回当前时间的格式化串
print(time.ctime())
print(time.ctime())
'''
Sun Apr 21 10:07:34 2019
Fri Jul 14 10:40:00 2017
Sun Apr 21 10:07:34 2019
Sun Apr 21 10:07:34 2019
'''

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值