作业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

 

posted @ 2018-10-22 11:19  四面楚歌·  阅读(186)  评论(0编辑  收藏  举报