ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

collections、time、datetime、random模块

2022-03-29 20:03:02  阅读:157  来源: 互联网

标签:res random ret datetime collections time print


re模块补充说明

import re
ret = re.findall('a(b)c', 'abcacbacb')
print(ret)
ret = re.findall('a(?:b)c', 'abcabcabc')
print(ret)
ret = re.findall('(a)(b)(c)', 'abcabcabcbabc')
print(ret)
"""
findall默认是分组优先显示
	正则表达式中如果有括号分组 那么在展示匹配结果的时候
	默认只演示括号里正则表达式匹配的内容
	也可以取消机制 (?:)就可以取消
"""
ret = re.search('a(b)c', 'abcacbacbacbacb')
print(ret.group())
print(ret.group(0))
print(ret.group(1))

ret = re.search('a(b)(c)', 'abcabcabcabc')
print(ret.group(0))
print(ret.group(1))
print(ret.group(2))
'''针对search和match有几个分组 group方法括号内最大就可以写几'''

# 分组之后还可以给组起别名
ret = re.search('a(?P<name1>b)(?P<name2>c)', 'abcabcabcabc')
print(ret.group('name1'))  # b
print(ret.group('name2'))  # c

collections模块

'''提供更多的数据类型'''
1.具名元祖
from collections import namedtuple

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

2.双端队列
队列:先进先出   默认是只有一端只能进另外一端只能出
  双端队列:两端都可以进出
import queue
q = queue.Queue(3)  # 最大只能放三个元素
# 存放元素
q.put(12)
q.put(13)
q.put(14)
q.put(15)  # 如果队列满了 继续添加则原地等待
# 获取元素
print(q.get())
print(q.get())
print(q.get()) 
print(q.get())  # 如果队列空了 继续获取则原地等待

from collections import deque
q = deque([1,2,3])
print(q)
q.append(444)  # 右边添加元素
print(q)
q.appendleft(666)  # 左边添加元素
print(q)
q.pop()  # 右边弹出元素
q.popleft()  # 左边弹出元素

3.字典相关
# 正常的字典内部是无序的
d1 = dict([('name','jason'),('pwd',123),('hobby','study')])
print(d1)  # {'pwd': 123, 'name': 'jason', 'hobby': 'study'}
print(d1.keys())
# # 有序字典
from collections import OrderedDict
d2 = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(d2)
d2['x'] = 111
d2['y'] = 222
d2['z'] = 333
print(d2)
print(d2.keys())

"""
有如下值集合 [1, 2, 3, 4, 5, 6, 7, 8],
将所有大于 6 的值保存至字典的第一个key中,将小于 6 的值保存至第二个key的值中。
"""
from collections import defaultdict
values = [1, 2, 3, 4, 5, 6, 7, 8]
my_dict = defaultdict(list)
for value in values:
    if value > 6:
        my_dict['k1'].append(value)
    else:
        my_dict['k2'].append(value)

4.计数器
'''
统计字符串中所有字符出现的次数
    {'a':3,'b':5...}
'''
res = 'abcacbcbcbcbaabbccbb'
from collections import Counter
r = Counter(res)
print(r)  # 可以当成字典使用

time模块

# 1.常用方法
1.time.sleep(secs)
	推迟指定的时间运行,单位为秒
  	ps:该方法贯穿前后(基础、后期)
2.time.time()
	获取当前时间戳
    
# 2.三种用于表示时间的格式(彼此之间可以转换)
  1.时间戳
  	距离1970年1月1日0时0分0秒至此相差的秒数  
    	time.time()
  2.结构化时间
  	该时间类型主要是给计算机看的,人看起来不太方便
    	time.localtime()
          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.格式化时间
  	人最容易接收的一种时间格式  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
      	  %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 当前时区的名称
          %% %号本身

时间类型的转换

格式化时间	<==> 结构化时间 <==>	 时间戳

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

datetime模块

# 基本操作
import datetime
print(datetime.date.today())  # 2022-03-29
print(datetime.datetime.today())  # 2022-03-29 11:55:50.883392
"""
date                意思就是年月日
datetime            意思就是年月日 时分秒
ps:后期很多时间相关的操作都是跟date和time有关系
"""
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

时间差
ctime = datetime.datetime.today()
time_tel = datetime.timedelta(days=4)   # 有很多时间选项
# print(ctime)  # 2022-03-29 12:01:52.279025
# print(ctime + time_tel)  # 2022-04-02 12:01:52.279025
# print(ctime - time_tel)  # 2022-03-25 12:03:34.495813
"""
针对时间计算的公式
    日期对象 = 日期对象 +/- timedelta对象
    timedelta对象 = 日期对象 +/- 日期对象
"""
res = ctime + time_tel
print(res - ctime)  # 4 days, 0:00:00

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))  # 随机抽取一个                     抽奖
ll = ['如花','C老师','R老师','J老师','M老师','张飞','龙龙']
print(random.sample(ll, 2))  # 随机指定个数抽样                 抽样

标签:res,random,ret,datetime,collections,time,print
来源: https://www.cnblogs.com/wcc98/p/16073520.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有