Python教程

python 6

本文主要是介绍python 6,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录
  • collections模块
    • 1.namedtuple(具名元组)
    • 2.deque(双端队列)
    • 3.OrderedDict(有序字典)
    • 4.defaultdict(含默认值字典)
    • 5.Counter(hash对象计数)
  • time模块
    • 1.常用方法
    • 2.三种用于表示时间的格式(彼此之间可以转换)
      • timestamp(时间戳)
      • struct_time(结构化时间)
      • format time(格式化时间)
    • 3.时间类型的转换
  • datetime模块
    • 1.date
    • 2.datetime
    • 3.timedelta
  • random模块

collections模块

包含了一些特殊的容器,针对Python内置的容器,例如list、dict、set和tuple,提供了另一种选择;

1.namedtuple(具名元组)

from collections import namedtuple
'''可以创建包含名称的tuple'''
point = namedtuple('坐标',['x','y'])
# 调用了namedtuple的元组对象
p1 = point(1,2)
p2 = point(10,8)
print(p1,p2)  # 坐标(x=1, y=2) 坐标(x=10, y=8)
print(p1.x)  # 1
print(p1.y)  # 2

person = namedtuple('人物','name age gender')
# 调用了namedtuple的元组对象
p1 = person('jason',18,'male')
p2 = person('kevin',28,'female')
print(p1,p2)  
# 人物(name='jason', age=18, gender='male') 人物(name='kevin', age=28, gender='female')
print(p1.name,p1.age)  # jason 18

"""具名元组的使用场景也非常的广泛 比如数学领域、娱乐领域等"""
card = namedtuple('扑克牌', ['花色', '点数'])
c1 = card('黑桃♠', 'A')
c2 = card('黑梅♣', 'K')
c3 = card('红心❤', 'A')
print(c1, c2, c3)
print(c1.点数)

2.deque(双端队列)

from collections import deque
'类似于list的容器,可以快速的在队列头部和尾部添加、删除元素'
q = deque([1,2,3])
print(q)
q.append(444)  # 右边添加元素
print(q)
q.appendleft(666)  # 左边添加元素
print(q)
q.pop()  # 右边弹出元素
q.popleft()  # 左边弹出元素

3.OrderedDict(有序字典)

from collections import OrderedDict
'dict的子类,可以记住元素的添加顺序'
from collections import OrderedDict
d2 = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(d2)
# OrderedDict([('a', 1), ('b', 2), ('c', 3)])
d2['x'] = 111
d2['y'] = 222
d2['z'] = 333
print(d2)
# OrderedDict([('a', 1), ('b', 2), ('c', 3), ('x', 111), ('y', 222), ('z', 333)])
print(d2.keys())
# odict_keys(['a', 'b', 'c', 'x', 'y', 'z'])

4.defaultdict(含默认值字典)

'dict的子类,可以调用提供默认值的函数'
from collections import defaultdict
values = [11, 22, 33,44,55,67,77,88,99,90]
my_dict = defaultdict(list)  # 字典所有的值默认都是列表
for value in  values:
    if value>66:
        my_dict['k1'].append(value)
    else:
        my_dict['k2'].append(value)

5.Counter(hash对象计数)

'dict的子类,计算可hash的对象'
from collections import Counter
r = Counter(res)
print(r)  # Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})
print(r.get('a'))  # 可以当成字典使用

time模块

1.常用方法

1.time.sleep(secs)
	推迟指定的时间运行,单位为秒
2.time.time()
	获取当前时间戳

2.三种用于表示时间的格式(彼此之间可以转换)

timestamp(时间戳)

  	距离1970年1月1日0时0分0秒至此相差的秒数  
    	time.time()

struct_time(结构化时间)

time.localtime()
属性                            值
tm_year(年)                  比如2011 
tm_mon(月)                   1 - 12
tm_mday(日)                  1 - 31
tm_hour(时)                  0 - 23
tm_min(分)                   0 - 59
tm_sec(秒)                   0 - 61
tm_wday(weekday)             0 - 6(0表示周日)
tm_yday(一年中的第几天)        1 - 366
tm_isdst(是否是夏令时)        默认为-1

format time(格式化时间)

人最容易接收的一种时间格式  2000/1/21 11:11:11
time.strftime()
	'%Y-%m-%d %H:%M:%S' # 2022-03-29 11:31:30
	'%Y-%m-%d %X'  # 2022-03-29 11:31:30
格式 含义
%a 本地(locale)简化星期名称
%A 本地完整星期名称
%b 本地简化月份名称
%B 本地完整月份名称
%c 本地相应的日期和时间表示
%d 一个月中的第几天(01 - 31)
%H 一天中的第几个小时(24小时制,00 - 23)
%I 第几个小时(12小时制,01 - 12)
%j 一年中的第几天(001 - 366)
%m 月份(01 - 12)
%M 分钟数(00 - 59)
%p 本地am或者pm的相应符
%S 秒(01 - 61)
%U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。
%w 一个星期中的第几天(0 - 6,0是星期天)
%W 和%U基本相同,不同的是%W以星期一为一个星期的开始。
%x 本地相应日期
%X 本地相应时间
%y 去掉世纪的年份(00 - 99)
%Y 完整的年份
%Z 时区的名字(如果不存在为空字符)
%% ‘%’字符

3.时间类型的转换

格式化时间   <==> 结构化时间 <==>	 时间戳
format time     struct_time      timestamp
# 时间戳<-->结构化时间
	gmtime
  localtime
# 结构化时间<-->格式化时间
	strftime
	strptime
  	time.strptime("2017-03-16","%Y-%m-%d")
    time.strptime("2017/03","%Y/%m")  前后必须一致
ps:UTC时间比我所在的区域时间早八个小时(时区划分)

datetime模块

'datatime模块重新封装了time模块,提供更多接口,提供的类有:date,time,datetime,timedelta,tzinfo。'
import datetime

1.date

date.today() # 返回一个表示当前本地日期的date对象;年月日

res = datetime.date.today()
print(res.year)  # 2022
print(res.month)  # 3
print(res.day)  # 29
print(res.weekday())  # 1       星期0-6
print(res.isoweekday())  # 2    星期1-7

2.datetime

datetime.today() # 返回一个表示当前本地时间的datetime对象;年月日 时分秒

3.timedelta

'使用timedelta可以很方便的在日期上做天days,小时hour,分钟,秒,毫秒,微妙的时间计算。'
print('microseconds:', datetime.timedelta(microseconds=1)) #microseconds: 0:00:00.000001
print('milliseconds:', datetime.timedelta(milliseconds=1)) #milliseconds: 0:00:00.001000
print('seconds :', datetime.timedelta(seconds=1)) #seconds : 0:00:01
print('minutes :', datetime.timedelta(minutes=1)) #minutes : 0:01:00
print('hours :', datetime.timedelta(hours=1)) #hours : 1:00:00
print('days :', datetime.timedelta(days=1)) #days : 1 day, 0:00:00
print('weeks :', datetime.timedelta(weeks=1)) #weeks : 7 days, 0:00:00

"""
针对时间计算的公式
    日期对象 = 日期对象 +/- timedelta对象
    timedelta对象 = 日期对象 +/- 日期对象
"""

random模块

'''随机数模块'''
import random
print(random.random())  # 随机产生一个0到1之间的小数
print(random.uniform(2, 4))  # 随机产生一个2到4之间的小数
print(random.randint(0, 9))  # 随机产生一个0到9之间的整数(包含0和9)
print(random.randint(1, 6))  # 掷骰子
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
random.shuffle(l)  # 随机打乱一个数据集合                       洗牌
print(l)
ll1 = ['特等奖', '张飞抱回家', '如花', '百万现金大奖', '群内配对']
print(random.choice(ll1))  # 随机抽取一个                     抽奖
这篇关于python 6的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!