作业5
一.处理日期时间
(1)取系统时间:
代码如下:
from datetime import datetime now = datetime.now() print(now) print(now.hour) print(now.day)
结果如下:
2018-10-22 09:04:06.253064
(2)转换成 "2017年9月30日星期六10时28分56秒" 格式字符串
代码如下:
from datetime import datetime now = datetime.now() print('{0:%Y}年{0:%m}月{0:%d}日星期{0:%w} {0:%H}时{0:%M}分{0:%S}秒'.format(now))
结果如下:
2018年10月22日星期1 10时59分50秒
(3)2018-10-25 22:00 转换成一个日期时间变量
代码如下:
from datetime import datetime cday = datetime.strptime('2018-10-25 22:00', '%Y-%m-%d %H:%M') print(cday)
结果如下:
2018-10-25 22:00:00
(4)计算两者的间隔
代码如下:
print(cday - datetime.now())
结果如下:
3 days, 10:41:15.555198
二、问题:
- 数列:
- a = a1,a2,a3,·····,an
- b = b1,b2,b3,·····,bn
- 求:
- c = a12+b13,a22+b23,a32+b33,·····+an2+bn3
(1)用列表+循环实现,并包装成函数
代码如下:
def sq(n): a = list(range(n)) b = list(range(0,5*n,5)) c = [] for i in range(len(a)): c.append(a[i]**2 + b[i]**3) return c sq(10)
结果如下:
[0, 126, 1004, 3384, 8016, 15650, 27036, 42924, 64064, 91206]
(2)用numpy实现,并包装成函数
代码如下:
import numpy as np def py(n): a = np.arange(n) b = np.arange(0,5*n,5) c = a**2 + b**3 return c py(10)
结果如下:
array([ 0, 126, 1004, 3384, 8016, 15650, 27036, 42924, 64064, 91206], dtype=int32)
(3)对比两种方法实现的效率,给定一个较大的参数n,用运行函数前后的timedelta表示。
代码如下:
from datetime import timedelta,datetime t1 = datetime.now() sq(10000) t2 = datetime.now() print(t2-t1) t3 = datetime.now() py(10000) t4 = datetime.now() print(t4 - t3)
结果如下:
0:00:00.009001 0:00:00.001000
三.尝试把a,b定义为三层嵌套列表和三维数组,求相对应元素的ai2+bi3
对比两种数据类型处理方法及效率的不同。
代码如下:
import numpy as np from datetime import datetime,timedelta def Asum(n): c = np.arange(n) d = np.arange(0,5*n,5) e = np.array([[c,d],[c,d]]) f = np.array([[c,c],[d,d]]) return print(e+f) now = datetime.now() Asum(10000) print(datetime.now()-now)
结果如下:
[[[ 0 2 4 ... 19994 19996 19998] [ 0 6 12 ... 59982 59988 59994]] [[ 0 6 12 ... 59982 59988 59994] [ 0 10 20 ... 99970 99980 99990]]] 0:00:00.001981