Python-数据结构之数字(int,float,complex)

概述 

python中就数字类型而言,支持三种,分别是int,float,complex.

鉴于complex复数在日常的使用实在太少,本次就忽略掉,不进行介绍.

重点介绍int和float两个类型.

首先,int和float作为python中的两个类,将简单的介绍各自的属性和方法.

其次再综合性介绍算术运算、比较运算、进制转换等.

整数形int 

原生的python为整形int类提供了四个方法和四个属性,虽然不常用,但简单的介绍下.

方法 说明
bit_length 返回整数转换成二进制后的bit位数
conjugate 返回整数的共轭复数
from_bytes 返回由给定字节数组表示的整数
to_bytes 返回表示整数的字节数组,from_bytes的逆序运算
属性 说明
imag 返回复数的虚数部分
real 返回复数的实数部分
numerator 有理数最小项的分子
denominator 有理数最小项的分母

需要注意的时,不能直接用数字来调用方法或数字,而要使用(数字).方法的形式,例如:

print((10).bit_length())#输出: 4

浮点数float 

原生的python为浮点float类提供了五个方法和两个个属性,虽然不常用,但简单的介绍下.

方法 说明
as_integer_ratio  在分母为正的前提下,返回一对比值刚好为该浮点数的整数
conjugate 返回该浮点是的共轭复数
hex 返回浮点数的十六进制表示形式
fromhex 将十六进制表示形式转换为浮点数,hex的逆运算
isteger 判断给定的浮点是是否为整数(如3.0是整数,而3.1则不是)
属性 说明
imag 返回复数的虚数部分
real 返回复数的实数部分

对于浮点数同样要使用(数字).方法的形式,例如:

print((3.0).is_integer())#输出:True
print((4.5).as_integer_ratio())#输出:(9, 2)

运算

  • 算术运算

符号 作用
+ 加法
- 减法
* 乘法
/ 浮点除(计算结果为浮点数)
% 取余数
** 幂运算
// 整除(计算结果为整数)

除了浮点除和整除外,其他算术运算对于int整型还是float浮点型并没有什么区别.

原则是int整型计算的结果依然是整型,float浮点型计算的结果依然是浮点型.

print(4+2,'|',2.5+3.1)
print(4*2,'|',2.5*3.1)
print(4**2,'|',2.5**3.1)
print(4-2,'|',2.5-3.1)
print(4%2,'|',2.5%3.1)

# 输出:
6 | 5.6
8 | 7.75
16 | 17.12434728726902
2 | -0.6000000000000001
0 | 2.5

现在来说说浮点除和整除.

正如其名,浮点除计算结果永远是浮点数,整除的结果永远是整数(丢弃余数,若无法整除)

先来看看int整型:

print(2/1)#输出:2.0
print(10//3)#输出:3

再来说float浮点型:

print(2.0/1.0)#输出:2.0
print(10.0//3.0)#输出:3

 看似10.0//3.0返回的是浮点数,并不是整数,但别忘了float类有一个自己判断是否为整数的方法istrger:

print((10.0//3.0).is_integer())#输出:True

可见,使用//整除,又叫地板除,在无法整除时,是丢弃了余数的,而%运算可以只取余数.

而python有一个divmod的内置函数,用元组的形式同时返回商和余数:

print(divmod(10.0,3.0))
print(divmod(20,3))
print(divmod(30,3.0))

#输出:
(3.0, 1.0)
(6, 2)
(10.0, 0.0)

前面我们提到,除了地板除,int整型计算的结果依然是整型,float浮点型计算的结果依然是浮点型,现在从刚刚的例子可以看到

浮点数与整数的运算返回的结果也是浮点数.

  • 比较运算 

比较运算不区分整型、浮点型,可以直接比较,返回的True或者False.

符号 含义
> 大于
< 小于
== 等于
!= 不等于
>= 大于等于
<= 小于等于
print(5>2.5)#输出:True
print(10==10.0)#输出:True
  • 进制运算

一般情况下,存在四种进制:二进制、八进制、十进制、十六进制.

进制 二进制 八进制 十进制 十六进制
函数 bin oct int hex
表示方式(第一位是数字0,第二位是字母) 0b 0o 正常数字 0x

四种进制之间,使用相应的函数,可以进制进制转换.

例如,用各种进制来表示十进制的10:

print(bin(0o12),'|',bin(10),'|',bin(0xa))
print(oct(0b1010),'|',oct(10),'|',oct(0xa))
print(hex(0b1010),'|',hex(0o12),'|',hex(10))
print(int(0b1010),'|',int(0o12),'|',int(0xa))

#输出:
0b1010 | 0b1010 | 0b1010
0o12 | 0o12 | 0o12
0xa | 0xa | 0xa
10 | 10 | 10

另外有一种特殊情况,需要将字符格式表示数字转换为十进制,且字符没有按照标准的格式来表示.

那么就需要手工指定base(默认值是10),例如:

print(int('1af',base=16))#输出:431

#将八进行的77转换为十进制
print(int('77',base=8))#输出:63

#将二进制的101转换为十进制
print(int('100',base=2))#输出:4

#base参数默认是10
print(int('20'))#输出:20

 

阅读更多

没有更多推荐了,返回首页