# [<>^]?width[,]?(.digits)?
x =1234.56789print(format(x,'0.2f'))print(format(x,'>10.1f'))# 右对齐print(format(x,'<10.1f'))print(format(x,'^10.1f'))# 居中print(format(x,','))# 千位分隔符print(format(x,'0,.1f'))# 千位分隔符 + 保留一位小数print(format(x,'e'))print(format(x,'0.2E'))# 保留两位小数的大E指数计法print('The value is {:0,.2f}'.format(x))
二八十六进制整数
x =1234print(bin(x))# 0bprint(oct(x))# 0oprint(hex(x))# 0xprint(format(x,'b'))# 不输出前缀print(format(x,'o'))print(format(x,'x'))# 对于负数,希望产生无符号数
x =-1print(format(2**32+ x,'b'))print(format(2**32+ x,'x'))# 不同进制转换成整数print(int('4d2',16))print(int('10011010010',2))
字节到大整数的打包与解包
# 字节字符串解压成整数,大整数转换成字节字符串
data =b'\x00\x124V\x00x\x90\xab\x00\xcd\xef\x01\x00#\x004'print(len(data))print(int.from_bytes(data,'little'))# 转整数print(int.from_bytes(data,'big'))
x1 =69120565665751139577663547927094891008
x2 =94522842520747284487117727783387188print(x1.to_bytes(16,'little'))# 转字节print(x2.to_bytes(16,'big'))
复数的数学运算
a =complex(2,4)
b =3-5jprint(a, a.real, a.imag, a.conjugate())# 实部、虚部、共轭print(a+b, a*b, a/b,abs(a))print(cmath.sin(a), cmath.cos(a), cmath.exp(a))# 正弦、余弦、平方根print(cmath.sqrt(-1))
无穷大与NaN(非数字)
a =float('inf')
b =float('-inf')
c =float('nan')print(a, b, c)print(math.isinf(a), math.isinf(b), math.isnan(c))
分数运算
a = Fraction(5,4)
b = Fraction(7,16)print(a+b, a*b)
c = a * b
print(c, c.numerator, c.denominator)# 分子 分母print(float(c))print(c.limit_denominator(8))# 限定分母大小
x =3.75
y = Fraction(*x.as_integer_ratio())# 转分数print(y)
m = np.matrix([[1,-2,3],[0,4,5],[7,8,-9]])print(m)print(m.T)
随机选择
values =[1,2,3,4,5,6]print(random.choice(values))print(random.sample(values,3))# 提取多个元素
random.shuffle(values)# 打乱print(values)print(random.randint(0,10))# 生成随机整数print(random.random())# 生成0~1范围均匀分布的浮点数print(random.getrandbits(16))# 生成N位随机二进制整数# 指定相同seed保证生成的随机数相同# random.seed() # Seed based on system time or os.urandom()# random.seed(12345) # Seed based on integer given# random.seed(b'bytedata') # Seed based on byte data# 除此外,random.uniform() 计算均匀分布随机数,random.gauss() 计算正态分布随机数
基本的日期与时间转换
# 表示一个时间段
a = datetime.timedelta(days=2, hours=6)
b = datetime.timedelta(hours=2.5)
c = a + b
print(c,type(c))print(c.days, c.seconds/3600, c.total_seconds()/3600)# 表示指定的日期和时间
a1 = datetime.datetime(2022,4,24,1,1,1)# year, month=None, day=None, hour=0, minute=0, second=0print(a1,type(a1))print(a1 + datetime.timedelta(days=2, hours=6))
now = datetime.datetime.now()
today = datetime.datetime.today()print(now,type(now))print(today,type(today))# 使用 dateutil 处理时区,模糊时间范围,节假日计算
a2 = datetime.datetime(2022,4,24)print(a2 + relativedelta(months=+1))
b2 = datetime.datetime(2022,4,23)print(a2 - b2)print(relativedelta(a2, b2))
text ='2012-09-20'
y = datetime.datetime.strptime(text,'%Y-%m-%d')# strptime性能很差print(y)
z = datetime.datetime(2012,9,23,21,37,4,177393)
nice_z = datetime.datetime.strftime(z,'%A %B %d, %Y')print(nice_z)