您的位置:首页 > 编程语言 > Python开发

python 0基础学习笔记7:递归、栈、队列、时间模块

2020-01-12 22:42 477 查看

递归:

递归调用:一个函数调用了自身,成为递归调用。
递归函数:一个会调用自身的函数叫做递归函数。

凡是循环能干的事,递归都能干,但是不容易写出来。

方式:
1、写出临界条件。
2、找这一次和上一次的关系。
3、假设当前函数已经能用,调用自身计算上一次的结果,再求出本次的结果。

栈:

规则:先进后出。

#用列表模拟栈结构,因为没有现成的栈结构。
stack = []
#压栈(向栈里存数据)
stack.append('A')
print(stack)
stack.append('B')
print(stack)
stack.append('C')
print(stack)
#出栈(在栈里取数据)
res1 = stack.pop()
print('res1=',res1)
print(stack)
res2 = stack.pop()
print('res2=',res2)
print(stack)
res3 = stack.pop()
print('res3=',res3)
print(stack)

结果为:
[‘A’]
[‘A’, ‘B’]
[‘A’, ‘B’, ‘C’]
res1= C
[‘A’, ‘B’]
res2= B
[‘A’]
res3= A
[]

队列:

规则:先进先出。

import collections
#创建一个队列
queue = collections.deque()
print(queue)
#进队(存数据)
queue.append('A')
print(queue)
queue.append('B')
print(queue)
queue.append('C')
print(queue)
#出队(取数据)
res1 = queue.popleft()
print('res1=',res1)
print(queue)

结果为:
deque([])
deque([‘A’])
deque([‘A’, ‘B’])
deque([‘A’, ‘B’, ‘C’])
res1= A
deque([‘B’, ‘C’])

深度遍历&广度遍历(第5/6节)
https://pan.baidu.com/s/1ULMBtfPN457yt8sYDL-wgw&shfl=sharepset
写爬虫时候,文件遍历的代码直接拿去用就行了。

时间相关模块:

UTC(世界协调时间):格林尼治天文时间,师姐标准时间,在中国就是UTC+8
DST(夏令时):是一种节约能源而人为规定的时间制度。在夏季调快一个小时。

时间表示形式:
1、时间戳:以整形或浮点型表示时间的一个以秒为单位的时间间隔。这个时间的基础值是从1970年1月1号凌晨开始算起,计算距它是多少秒。
2、元组:一种python的数据结构表示,这个元组有9个整形内容。year、month、day、minutes、seconds、weekday、Julia day、flag(1或-1或0)1表示DST,0表示正常时间。
3、格式化字符串:%A,%Y,%M,%m等等

time模块:

import time
#返回当前时间的时间戳,浮点式形式,不需要函数
c = time.time()
print(c)
#将时间戳转为UTC时间元组
t = time.gmtime(c)
print(t)
#将时间戳转为本地时间元组
b = time.localtime(c)
print(b)

#将本地时间元组转为时间戳
m = time.mktime(b)
print(m)

#将时间元组转为字符串
s = time.asctime(b)
print(s)

#将时间戳转为字符串    即:time.asctime(time.localtime(time.time())
p = time.ctime(c)
print(p)

#将时间元组转成给定格式的字符串,参数2为时间元组,如果唯一参数2,默认转当前时间。
q = time.strftime('%Y-%m-%d %H:%M:%S',b)
print(q)

#将事件字符串转为时间元组
w = time.strptime(q,'%Y-%m-%d %X')
print(w)

结果为:
1571663439.9040654
time.struct_time(tm_year=2019, tm_mon=10, tm_mday=21, tm_hour=13, tm_min=10, tm_sec=39, tm_wday=0, tm_yday=294, tm_isdst=0)
time.struct_time(tm_year=2019, tm_mon=10, tm_mday=21, tm_hour=21, tm_min=10, tm_sec=39, tm_wday=0, tm_yday=294, tm_isdst=0)
1571663439.0
Mon Oct 21 21:10:39 2019
Mon Oct 21 21:10:39 2019
2019-10-21 21:10:39
time.struct_time(tm_year=2019, tm_mon=10, tm_mday=21, tm_hour=21, tm_min=10, tm_sec=39, tm_wday=0, tm_yday=294, tm_isdst=-1)

import time
#延迟一个时间,整数或者浮点数
time.sleep(4)
#返回当前程序的cpu执行时间,Unix形同始终返回全部的运行时间,windows从第二次开始,都是以第一个调用此函数的开始时间戳为基数
time.clock()

datetime模块:

datetime比time高级不少,可以理解为datetime基于time进行了封装,提供了更为实用的函数,datetime模块的接口(方法)更加直观和容易调用。

模块中的类:
datetime:同时有时间和日期
timedelta:主要用于计算时间的跨度
tzinfo:时区相关
time:只关注时间
date:只关注日期

import datetime
d1 = datetime.datetime.now()#获取当前时间
print(d1)
print(type(d1))

d2 = datetime.datetime(2018,10,1,10,28,35,123456)
print(d2)

#将时间转为字符串
d3 = d1.strftime('%y-%m-%d %X')
print(d3)
print(type(d3))

#将格式化字符串转为datetime对象,注意转换的格式要与字符串一致
d4 = datetime.datetime.strptime(d3,'%y-%m-%d %X')
print(d4)

结果为:
2019-10-21 21:38:15.930784
<class ‘datetime.datetime’>
2018-10-01 10:28:35.123456
19-10-21 21:38:15
<class ‘str’>
2019-10-21 21:39:58

import datetime
d5 = datetime.datetime(1999,10,1,10,1,1,123456)
d6 = datetime.datetime.now()
d7 = d6-d5
print(d7)
print(type(d7))
print(d7.days)#间隔的天数
print(d7.seconds)#间隔天数除外的秒数

结果为:
7325 days, 11:47:48.601579
<class ‘datetime.timedelta’>
7325
42468

日历模块:

import calendar
print(calendar.month(2019,10))#返回指定某年某月的日历
print(calendar.calendar(2019))#返回指定年的日历
print(calendar.isleap(2000))#闰年返回True,否则返回Flase
print(calendar.monthrange(2019,10))#返回某个月的weekday的第一天和这个月所有的天数
print(calendar.monthcalendar(2019,10))#返回某个月以每一周为元素的列表
  • 点赞
  • 收藏
  • 分享
  • 文章举报
佳佳佳佳佳111 发布了22 篇原创文章 · 获赞 0 · 访问量 93 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: