Python--进阶处理3
# ===================第三章:数字日期和时间==================== # ---------------------数字的四舍五入--------------------------
# 对于简单的舍入运算,使用内置的round(value, ndigits) 函数
# 当一个值刚好在两个边界的中间的时候, round 函数返回离它最近的偶数。也就是说,对1.5 或者2.5 的舍入运算都会得到2
# 如果只是简单的输出一定宽度的数,不需要使用round() 函数
x = 1.23456
print(round(x, 3))
print(format(x, '0.3f')) # ---------------------执行精确的浮点数运算---------------------
# 如果想更加精确(并能容忍一定的性能损耗),可以使用decimal 模块
from decimal import Decimal
a = Decimal('4.2')
b = Decimal('2.1')
print(a + b) # ----------------------分数运算-----------------------------
# fractions 模块可以被用来执行包含分数的数学运算
from fractions import Fraction
a = Fraction(5, 4)
b = Fraction(7, 16)
print(a + b) # ----------------------大型数组运算--------------------------
# 涉及到数组的重量级运算操作,可以使用NumPy 库。NumPy 的一个主要特征是它会给Python 提供一个数组对象
import numpy as np
ax = np.array([1, 2, 3, 4])
by = np.array([5, 6, 7, 8])
print(ax * 2)
print(ax + 10)
print(ax + by)
print(ax * by) # ----------------------随机选择-------------------------
# random 模块有大量的函数用来产生随机数和随机选择元素
# 从一个序列中随机的抽取一个元素,可以使用random.choice()
import random
values = [1, 2, 3, 4, 5, 6]
print(random.choice(values))
# 为了提取出N 个不同元素的样本用来做进一步的操作,可以使用random.sample()
print(random.sample(values, 3))
# 如果只是想打乱序列中元素的顺序,可以使用random.shuffle()
random.shuffle(values)
print(values)
# 生成随机整数,请使用random.randint()
num = random.randint(0, 10)
print(num)
# 为了生成0 到1 范围内均匀分布的浮点数,使用random.random()
one = random.random()
print(one)
# 获取N 位随机位(二进制) 的整数,使用random.getrandbits()
two = random.getrandbits(30)
print(two) # ==============基本的日期和时间转换==================
# 为了执行不同时间单位的转换和计算,请使用datetime 模块
from datetime import timedelta
a = timedelta(days=3, hours=6)
b = timedelta(days=2)
print(a-b)
from datetime import datetime
# 表示指定的日期和时间
a = datetime(2019, 2, 9)
print(a + timedelta(days=20))
# 需要执行更加复杂的日期操作,比如处理时区,模糊时间范围,节假日计算等等,可以考虑使用dateutil 模块
from dateutil.relativedelta import relativedelta
d = datetime.now()
print(d)
print(d - relativedelta(days=-1)) # --------------计算当前月份的日期范围--------------------
from datetime import datetime, date, timedelta
import calendar
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)
end_date = start_date + timedelta(days=days_in_month)
return (start_date, end_date)
print(get_month_range()) # -----------------------字符串转换为日期-------------------------
from datetime import datetime text = '2012:09:20'
y = datetime.strptime(text, '%Y:%m:%d')
print(y)
print(datetime.now())
# 需要注意的是, strptime() 的性能较差
# 自定义解析函数
def parse_ymd(s):
year_s, mon_s, dat_s = s.split('-')
return datetime(int(year_s), int(mon_s), int(dat_s))
print(parse_ymd('2011-11-11')) # --------------------结合时区的日期操作-----------------------
# 对几乎所有涉及到时区的问题,应该使用pytz 模块
# pytz 模块一个主要用途是将datetime 库创建的简单日期对象本地化
from datetime import datetime
from pytz import timezone
d = datetime(2018, 2, 8, 9, 30, 0)
print(d)
central = timezone('US/Central')
loc_d = central.localize(d)
print(loc_d)
Python--进阶处理3的更多相关文章
- Python进阶:函数式编程实例(附代码)
Python进阶:函数式编程实例(附代码) 上篇文章"几个小例子告诉你, 一行Python代码能干哪些事 -- 知乎专栏"中用到了一些列表解析.生成器.map.filter.lam ...
- Python进阶 - 对象,名字以及绑定
Python进阶 - 对象,名字以及绑定 1.一切皆对象 Python哲学: Python中一切皆对象 1.1 数据模型-对象,值以及类型 对象是Python对数据的抽象.Python程序中所有的数据 ...
- Python进阶-继承中的MRO与super
Python进阶-继承中的MRO与super 写在前面 如非特别说明,下文均基于Python3 摘要 本文讲述Python继承关系中如何通过super()调用"父类"方法,supe ...
- Python进阶 - 命名空间与作用域
Python进阶 - 命名空间与作用域 写在前面 如非特别说明,下文均基于Python3 命名空间与作用于跟名字的绑定相关性很大,可以结合另一篇介绍Python名字.对象及其绑定的文章. 1. 命名空 ...
- python进阶学习笔记(一)
python进阶部分要学习的内容: 学习目标: 1.函数式编程 1.1,什么是函数式编程 函数式编程是一种抽象计算的编程模式 不同语言的抽象层次不同: 函数式编程的特点: python支持的函数式编程 ...
- 【python进阶】详解元类及其应用2
前言 在上一篇文章[python进阶]详解元类及其应用1中,我们提到了关于元类的一些前置知识,介绍了类对象,动态创建类,使用type创建类,这一节我们将继续接着上文来讲~~~ 5.使⽤type创建带有 ...
- 【python进阶】Garbage collection垃圾回收2
前言 在上一篇文章[python进阶]Garbage collection垃圾回收1,我们讲述了Garbage collection(GC垃圾回收),画说Ruby与Python垃圾回收,Python中 ...
- Python进阶 函数式编程和面向对象编程等
函数式编程 函数:function 函数式:functional,一种编程范式.函数式编程是一种抽象计算机的编程模式. 函数!= 函数式(如计算!=计算机) 如下是不同语言的抽象 层次不同 高阶函数: ...
- 【python进阶】深入理解系统进程2
前言 在上一篇[python进阶]深入理解系统进程1中,我们讲述了多任务的一些概念,多进程的创建,fork等一些问题,这一节我们继续接着讲述系统进程的一些方法及注意点 multiprocessing ...
- Python进阶:如何将字符串常量转化为变量?
前几天,我们Python猫交流学习群 里的 M 同学提了个问题.这个问题挺有意思,经初次讨论,我们认为它无解. 然而,我认为它很有价值,应该继续思考怎么解决,所以就在私密的知识星球上记录了下来. 万万 ...
随机推荐
- cocos2d-x与ISO内存管理(转)
一,IOS与图片内存 在IOS上,图片会被自动缩放到2的N次方大小.比如一张1024*1025的图片,占用的内存与一张1024*2048的图片是一致的.图片占用内存大小的计算的公式是:长*宽*4.这样 ...
- Nginx - Windows下Nginx初入门,附CentOS下Nginx的安装
公司刚使用nginx,预先学习下.鉴于机器没有Linux环境,在Windows熟悉下. 下载 目前(2015-07-11),nginx的稳定版本是1.8.0,在官网下载先,windows版的nginx ...
- C#和sqlserver中生成新的32位GUID
C#中用Guid.NewGuid().ToString() Sql中用NEWID() 以上方法生成的是36位的GUID,如果需要转换成32位,则需要替换掉其中的'-'字符. Sql中的方法:repla ...
- python跳一跳辅助学习
微信跳一跳辅助工具 准备工具 adb驱动 安卓手机 打开手机的调试模式 usb接好手机和电脑 PyCharm:全宇宙唯一一款专门用于Python开发IDE工具 实现原理: 获取手机的实时的截图 点击起 ...
- getAttribute()方法
http://www.imooc.com/code/1587 getAttribute()方法 通过元素节点的属性名称获取属性的值. 语法: elementNode.getAttribute(name ...
- exchange邮箱系统增加验证码机制
首先背景是exchange的邮箱系统没有后台源代码.因为这个原因,生成验证码的机制放在aspx的runat="sever"后台代码里面. 首先需要找到iis中logon.aspx文 ...
- 大数据(12) - Scala安装与IDE相关配置
一 Scala简述 统计世界top100大学计算机系年级前三名,从初中开始编程,学过20多种语言,最后认为Scala最难.好了,我们开始享受这个过程把:). 二 Scala安装与配置 Scala需 ...
- 浅谈NFC、RFID、红外、蓝牙的区别
很多朋友对NFC和RFID这两个词感到陌生,但是手机经常会出现支持NFC支付,又没太在意,NFC与RFID其实是手机支付的种方式(手机支付也被称作移动支付,是一种允许移动用户使用其移动终端对所消费的商 ...
- URLDecoder: Incomplete trailing escape (%) pattern问题处理
http://blog.csdn.net/yangbobo1992/article/details/10076335 _________________________________________ ...
- Android Studio 工具栏添加图标
本文中 Android Studio 的版本为 Android Studio 2.2 ,操作系统为 Windows,如有操作不同,可能是版本差异.在工具栏中添加一些常用的图标有利于我们开发,举例说明: ...