数字的四舍五入
- 想对浮点数执行指定精度的舍入运算
简单的传入运算可以使用round(value, ndigits)函数即可.
# 舍入
print(round(1.234, 2)) #1.23
print(round(1.2345, 1)) #1.2
# 格式化的方式
print(format(1.23456, '0.2f'))
print('value is {:0.3f}'.format(1.223243)) #value is 1.223
- 更加精确舍入操作,使用decimal模块
from decimal import Decimal
a = Decimal('4.2')
b = Decimal('2.1')
print(a + b)
大数组运算
涉及到数组的重量级运算操作,可以使用 NumPy库。 NumPy 的一个主要特征是它会给 Python提供一个数组对象,相比标准的Python列表而已更适合用来做数学运算
x= [1,2, 3,4]
y= [5,6, 7,8]
import numpy as np
ax = np.array(x)
ay = np.array(y)
print(ax*2) #[2 4 6 8]
print(ax + 10) # print(ax + 10)
print(ax + ay) # [ 6 8 10 12]
NumPy 是Python领域中很多科学与工程库的基础,同时也是被广泛使用的最大最复杂的 模块, 可以详细研究,这里只是一个小例子,知道这个库的存在~
** 随机选择 **
- 想从一个序列中随机抽取若干元素,或者想生成几个随机数
import random
values = [1,2,3,4,5,6]
print(random.choice(values)) #随机选择一个
print(random.sample(values, 2)) # 随机提取N个元素
print(random.shuffle(values)) #仅打乱序列元素中的顺序
print(random.randint(0,10)) #生成随机整数
print(random.random()) #生成随机0~1之间的浮点数0.7638343860063255
print(round(random.random(),2)) #生成随机0~1之间的浮点数0.76
基本的日期与时间转换
- 要执行简单的时间转换,比如天到秒,小时到分钟等的转换
# 执行不同时间单位的转换和计算,请使用 datetime 模块
from datetime import timedelta
a = timedelta(days=2, hours=6)
b = timedelta(hours=4.5)
c = a+b
print(c.days)
print(c.seconds) #37800
print(c.seconds / 3600) # 10.5
print(c.total_seconds()/3600) # 58.5
- 你想表示指定的日期和时间,先创建一个 datetime 实例然后使用标准的数学运算来 操作它们
from datetime import datetime
a = datetime(1989,12,6)
print(a + timedelta(days=10)) # 2020-07-13 00:00:00
b = datetime(2020, 7,3)
d = b - a
print(d.days)
now = datetime.today()
print(now) # 2020-07-03 12:05:15.935663
print(now + timedelta(minutes=10)) # 2020-07-03 12:15:51.011784
print(datetime.now()) # 2020-07-03 12:10:26.076258
am_10 = datetime.now().replace(hour=10, minute=0, second=0)
print(am_10) # 2020-07-03 10:00:00.076398
- 日期格式化,strptime()由字符串格式化为日期格式,转换后可以加关系
print(datetime.strptime('2020-7-1 5:54:45', '%Y-%m-%d %H:%M:%S')) #2020-07-01 05:54:45
for pr in merged_prs:
pr_update = datetime.datetime.strptime(
pr.updated_at,
"%Y-%m-%dT%H:%M:%S.%fZ") + datetime.timedelta(hours=8)
if (pr_update - am_10).total_seconds() > 0:
pass
- 日期格式转化为字符串格式, 可以strftime()
print(datetime.strftime(datetime.now(), '%Y-%m-%d %H:%M')) #2020-07-03 14:05
计算当前月份的日期范围
- 需要在当前月份中循环每一天,想找到一个计算这个日期范围的高效方法
import calendar
from datetime import datetime, date, timedelta
def get_month_range(start_date=None):
if start_date is None:
start_date = date.today().replace(day=1)
_, days_in_month = calendar.monthrange(start_date.year, start_date.month) # monthrange() 函数会返回包含星期和该月天 数的元组。eg: (0,31)
end_date = start_date + timedelta(days=days_in_month)
return (start_date, end_date)
print(get_month_range()) # (datetime.date(2020, 7, 1), datetime.date(2020, 8, 1))
a_day = timedelta(days=1)
firstday , last_day = get_month_range()
while firstday < last_day:
print(firstday)
firstday += a_day
结果:
2020-07-01
2020-07-02
2020-07-03
2020-07-04
2020-07-05
2020-07-06
2020-07-07...