python cookbook 2 数字 日期 时间(2)

5.字节到大整数的转换

#拥有128位长的16个元素的字节字符串。
>>> data = b‘\x00\x124V\x00x\x90\xab\x00\xcd\xef\x01\x00#\x004‘
>>> len(data)
16
将bytes解析为整数,使用 int.from_bytes() 方法
#仅使用与python3
#字节顺序规则(little或big)仅仅指定了构建整数时的字节的低位高位排列方式。
>>> int.from_bytes(data, ‘little‘)
69120565665751139577663547927094891008
>>> int.from_bytes(data, ‘big‘)
94522842520747284487117727783387188
>>> 
将一个大整数转换为一个字节字符串,使用 int.to_bytes() 方法,并像下面这样指定字节数和字节顺序:
>>> x=94522842520747284487117727783387188
>>> x.to_bytes(16,‘big‘)
b‘\x00\x124V\x00x\x90\xab\x00\xcd\xef\x01\x00#\x004‘
>>> x.to_bytes(16,‘little‘)
b‘4\x00#\x00\x01\xef\xcd\x00\xab\x90x\x00V4\x12\x00‘
>>> 
使用 int.bit_length() 方法来决定需要多少字节位来存储这个值
>>> x=94522842520747284487117727783387188
>>> x.bit_length()
117

6.复数的数学运算

复数可以用使用函数 complex(real, imag) 或者是带有后缀j的浮点数来指定

>>> a = complex(2, 4)
>>> b= 3-5j
>>> a
(2+4j)
>>> b
(3-5j)

对应的实部、虚部和共轭复数
>>> a.real
2.0
>>> a.imag
4.0
>>> a.conjugate()
(2-4j)
所有常见的数学运算都可以工作
>>> a+b
(5-1j)
>>> a-b
(-1+9j)
>>> a/b
(-0.4117647058823529+0.6470588235294118j)
>>> abs(a)
4.47213595499958
执行其他的复数函数比如正弦、余弦或平方根,使用cmath模块
>>> import cmath
>>> cmath.sin(a)
(24.83130584894638-11.356612711218173j)
>>> cmath.cos(a)
(-11.36423470640106-24.814651485634183j)
>>> cmath.exp(a)
(-4.829809383269385-5.5920560936409816j)
Python的标准数学函数确实情况下并不能产生复数值
>>> import math
>>> math.sqrt(-1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: math domain error
>>> import cmath
>>> cmath.sqrt(-1)
1j

7.无穷大与NaN

创建或测试正无穷、负无穷或NaN(非数字)的浮点数

>>> a = float(‘inf‘)
>>> b = float(‘-inf‘)
>>> c = float(‘nan‘)
>>> a
inf
>>> b
-inf
>>> c
nan
使用 math.isinf() 和 math.isnan() 函数检测
>>> math.isinf(a)
True
>>> math.isnan(c)
True
>>> math.isinf(b)
True
无穷大数在执行数学计算的时候会传播
>>> a+45
inf
>>> a*10
inf
>>> 10/a
0.0
有些操作时未定义的并会返回一个NaN结果。
>>> a/a
nan
>>> a+b
nan
NaN值会在所有操作中传播,而不会产生异常。
>>> c+11
nan
>>> c/3
nan
>>> c*3
nan
NaN值的一个特别的地方时它们之间的比较操作总是返回False。
>>> d=float(‘nan‘)
>>> c==d
False
>>> c is d
False
由于这个原因,测试一个NaN值得唯一安全的方法就是使用 math.isnan()

8.分数运算

fractions模块可以被用来执行包含分数的数学运算。

>>> from fractions import Fraction
>>> a =Fraction(5,4)
>>> b = Fraction(7, 16)
>>> a
Fraction(5, 4)
>>> b
Fraction(7, 16)
>>> print a+b
27/16
>>> print a*b
35/64
取分子分母
>>> c= a*b
>>> c.numerator
35
>>> c.denominator
64
换算成小数
>>> float(c)
0.546875
限制分母
>>> c.limit_denominator(8)#分母不超过8的最接近的分数
Fraction(4, 7)
float转换为分数
>>> x=1.75
>>> y = Fraction(*x.as_integer_ratio())
>>> y
Fraction(7, 4)
时间: 2024-10-06 21:13:17

python cookbook 2 数字 日期 时间(2)的相关文章

Python学习笔记9:标准库之日期时间(time包,datetime包)

一 time包 sleep([float time]) 延迟一段以浮点数表示的秒数 time包基于C语言的库函数(library functions). Python的解释器一般是用C编写的,Python的一些函数也会直接调用C语言的库函数. time.time()获得当前时间,返回float型, 单位:秒 time.clock()在UNIX系统上,它返回的是"进程时间",它是用秒表示的浮点数(时间戳). 而在WINDOWS中,第一次调用,返回的是进程执行的实际时间.而第二次之后的调用

Python中处理日期时间库的使用方法(转载)

<本文来自公众号"大邓带你玩python",转载> 用百分之20时间,学会解决百分之80的问题. 常用的库有time.datetime.其中datetime库是对time库的封装,所以使用起来更加便捷.date是指日期时间(年月日)处理,time往往更加细小的单位(小时分秒等)的时间处理. 一.datetime库 datetime.date类 表示日期的类,常用的属性有year.month.day.参数都为整数. import datetime #任何一天 someday

【Python】随机模块random &amp; 日期时间のtime&amp;&amp;datetime

■ random 顾名思义,random提供了python中关于模拟随机的一些方法.这些方法都一看就懂的,不多说了: random.random() 返回0<n<=1的随机实数 random.uniform(a,b) 返回a<n<=b的随机实数 random.randrange([start],stop,[step]) 返回序列range(start,stop,step)中随机一项 random.choice(seq) 返回序列中随机一项 random.sample(seq,n)

类(数字、日期时间的用法及练习)

一.数字 Math.Ceiling()      表示进位,取上限.例:2.3的进位是3 Math.Floor()        表示舍位,取下限.例:2.3的舍位是2 Math.Round()        表示四舍五入 Math.Sqrt()         根号下,表示开方 Math.PI             圆周率 二.日期时间 DateTime dt=new DateTime(1993,3,3,3,3,3);  //创建时间1993年3月3日3点3分3秒 DateTime dt=D

Python日期时间函数处理

所有日期.时间的 api 都在datetime模块内. 1 日期的格式化输出 datetime => string import datetime now = datetime.datetime.now() now.strftime('%Y-%m-%d %H:%M:%S') 输出 '2015-04-07 19:11:21' strftime是datetime类的实例方法. string => datetime import datetime t_str = '2015-04-07 19:11:

Unix时间戳转日期时间格式,C#、Java、Python各语言实现!

之前有个Q上好友没事问我,怎么自己写Unix时间戳转日期时间?于是我就顺手写了个C#版本给他!最近想起来,就萌发多写几个语言的版本分享,权当练习思路外加熟悉另外两种语言. 先说转换步骤 先处理年份,从1970年开始处理,根据平年闰年的总秒数,先得到年,剩余的秒数再求月份: 根据剩余秒数求得月份,因为2月的缘故,同样需要处理平年闰年': 得天数,直接除以每天的总秒数,然后取得天: 取小时.分钟.秒: Python版本: # -*- coding: UTF-8 -*- from datetime i

python学习笔记23(时间与日期 (time, datetime包))

Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime. time包 time包基于C语言的库函数(library functions).Python的解释器通常是用C编写的,Python的一些函数也会直接调用C语言的库函数. import time print(time.time()) # wall clock time, unit: second print(time.clock()) # processor clock time, unit: sec

送你6 个 Python 的日期时间库!让你的Python更加得心应手!

内建的 datetime 模块 让我们看看其他库是如何处理这种转换的. Dateutil 通过 Arrow datetime 类的实例,你可以访问 Arrow 的其他有用方法.例如,它的humanize()方法将日期时间翻译成人类可读的短语,就像这样: 由于 Maya 与 datetime 库中很多有用的方法重叠,因此它可以使用 MayaDT 类的实例执行诸如使用 slang_time() 方法将时间偏移量转换为纯文本语言,并将日期时间间隔保存在单个类的实例中.以下是如何使用 Maya 将日期时

日期类时间类,日期时间类,单例模式,装箱与拆箱,数字类随机数,BigDecimal总结

1.日期类,时间类,日期时间类 初步日期使用方法及格式转换方法(旧方法): 格式://Mon Jul 30 11:26:05 CST 2018             年月日时分秒    CST代表北京时间 获取当前毫秒 Date date = new Date(); 转换时间格式: SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String s = sdf.format(date); 日历类的使