1.常用内置模块之collections模块
1.具名元组:namedtuole:可以使用第一个元素的名字来修饰元组
from collections import namedtuple
point = namedtuple('位置坐标', ['x', 'y'])
p1 = point(4, 6)
print(p1) # 位置坐标(x=4, y=6)
print(p1.x) # 4
print(p1.y) # 6
card = namedtuple('组合', ['num', 'color'])
c1 = card('J', '黑桃')
c2 = card('k', '红桃')
print(c1.num, c1.color) # J 黑桃
2.队列
队列与堆栈
队列:先进先出
堆栈:先进后出
队列和堆栈都是一边只能进一边只能出
3.deque模块:我们在对元祖首位的文件增删时之前的方法较为麻烦,可以调用deque实现首尾高效增删(适用于队列和栈)
from collections import deque
q = deque(['jason', 'jerry', 'kitty'])
q.append('janny')
q.appendleft('max')
print(q) # deque(['max', 'jason', 'jerry', 'kitty', 'janny'])
q.pop()
q.popleft()
print(q) # deque(['jason', 'jerry', 'kitty'])
4.OrderDict:使用是dict是无序的,我们想要使dict变得有顺序可以使用OrderDict,添加顺序越前顺序就越靠前
from collections import OrderedDict
od = OrderedDict()
od['name'] = 'max'
od['hobby'] = 'soccer'
od['base'] = 'Shanghai'
print(od) # OrderedDict([('name', 'max'), ('hobby', 'soccer'), ('base', 'Shanghai')])
5.Counter:Counter是用来跟踪值出现的次数,以字典键值对的形式存储
from collections import Counter
c = Counter('jkadfyhjksdbvsfdfs')
print(c) # Counter({'d': 3, 'f': 3, 's': 3, 'j': 2, 'k': 2, 'a': 1, 'y': 1, 'h': 1, 'b': 1, 'v': 1})
2.常用内置模块之时间模块-import time
1.时间戳:表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,我们运行“type(time.time())”,返回的是float类型
import time
print(time.time()) # 1666171837.1783726
start_time = time.time()
print('看看这个程序执行需要多久')
time.sleep(3)
end_time = time.time()
print('执行时间', end_time - start_time)
import time
print(type(time.time())) # <class 'float'>
2.结构化时间:主要是给计算机看的,其中tm_wday是星期(从0开始计),0代表星期一,6代表星期天。tm_yday代表一年当中的第几天
print(time.localtime()) # time.struct_time(tm_year=2022, tm_mon=10, tm_mday=19, tm_hour=18, tm_min=33, tm_sec=2, tm_wday=2, tm_yday=292, tm_isdst=0)
3.格式化时间:主要是给人看的,类似以格式化输出,连接符可以自定义
import time
print(time.strftime('%Y-%m-%d')) # 2022-10-19
print(time.strftime('%Y/%m/%d')) # 2022/10/19
print(time.strftime('%Y/%m/%m %H:%M:%S')) # 2022/10/10 18:29:14
print(time.strftime('%Y/%m/%d %X')) # 2022/10/19 18:30:30
print(time.strftime('%Y-%m')) # 2022-10
索引(Index) | 属性(Attribute) | 值(Values) |
---|---|---|
0 | tm_year(年) | 比如2011 |
1 | tm_mon(月) | 1 - 12 |
2 | tm_mday(日) | 1 - 31 |
3 | tm_hour(时) | 0 - 23 |
4 | tm_min(分) | 0 - 59 |
5 | tm_sec(秒) | 0 - 60 |
6 | tm_wday(weekday) | 0 - 6(0表示周一) |
7 | tm_yday(一年中的第几天) | 1 - 366 |
8 | tm_isdst(是否是夏令时) | 默认为0 |
3.常用内置模块之时间模块-import datatime
1.datetime和date的区别在于datetime.now()和datetime.today()都会精确到秒。而date只会精确到日
import datetime
datetime.now():获取当前datetime
print(datetime.datetime.now()) # 2022-10-19 18:47:52.303691
print(datetime.datetime.today()) # 2022-10-19 18:47:52.303692
print(datetime.date.today()) # 2022-10-19
2.date.utcnow():获取获取当前格林威治时间
from datetime import datetime
print(datetime.utcnow()) # 2022-10-19 10:58:23.396622
3.datetime(五个参数):获取指定时间
from datetime import datetime
c = datetime(2019, 6, 15, 20, 58)
print(c) # 2019-06-15 20:58:00
4.将字符串转换成标准格式时间:
from datetime import datetime
d = datetime.strptime('2017/9/30','%Y/%m/%d')
print(d) # 2017-09-30 00:00:00
e = datetime.strptime('2019/5/1', '%Y/%m/%d')
print(e) # 2019-05-01 00:00:00
f = datetime.strptime('2017年9月30日星期六', '%Y年%m月%d日星期六')
print(f) # 2017-09-30 00:00:00
5.计划指定时间任务
import datetime
ctime = datetime.date.today()
print(ctime) # 2022-10-19
del_time = datetime.timedelta(days=3)
print(ctime + del_time) # 2022-10-22
import datetime
ctime = datetime.datetime.today()
print(ctime) # 2022-10-19 19:19:37.132740
del_time = datetime.timedelta(minutes=3)
print(ctime + del_time) # 2022-10-19 19:22:37.132740
4.常用内置模块之随机数模块
1.产生0-1随机的小数
import random
print(random.random()) # 0.7536697184640402
2.随机产生整数(首尾都包含)(摇骰子)
print(random.randint(1,6)) # 4
3.随机产生范围中一个数,间隔(步长)为2
print(random.randrange(1,20,2)) # 9
4.随机抽取列表当中一个元素,几率相等
print(random.choice(['一等奖', '二等奖', '三等奖', '谢谢惠顾'])) # 一等奖
print(random.choices(['一等奖', '二等奖', '三等奖', '谢谢惠顾'])) # ['二等奖']
"""
choices会保留数据类型,choice不会
"""
5.choice.sample:随机抽取列表当中几个数据值,可以指定数量
print(random.sample(['jason', 'jerry','tony', 'max'], 2)) # ['max', 'tony']
6.打乱列表当中数据值的顺序:random.shuffle()(洗牌)
l1 = [1,2,3,4,5,6,7,8,9,10,'J','Q','K']
random.shuffle(l1)
print(l1) # [4, 2, 3, 7, 9, 1, 8, 10, 6, 'J', 'K', 5, 'Q']
7.产生随机验证码,每一位都可以是大小写、字母
def get_code(n):
code = ''
for i in range(n):
random_upper = chr(random.randint(65, 90)) # 随机产生大写字母
randon_lower = chr(random.randint(97,112)) # 随机产生小写字母
randon_int = str(random.randint(0,9)) # 随机产生整数
temp = random.choice([random_upper, randon_lower,randon_int]) # 三选一
code += temp # 字符串相加
return code
res = get_code(4)
print(res)
标签:10,内置,random,datetime,tm,模块,time,print
From: https://www.cnblogs.com/zkz0206/p/16807592.html