Python中常用数字类型
1、python中提供了:整数,浮点数,十六进制,八进制,二进制整数,复数,还提供了精度无穷大的整数
2、在python2.6中 0177八进制 0x177十六进制 0b101010二进制而在python3.0中oo177八进制,0x177十六进制,0b1010二进制
3、在python2.6中有两种类型的整数:一般整数和长整数,一个整数可以在末尾加上l或者L,将其强制转化为长整数,当长度超过32时,其自动转化为长整数,我们不需要加上l或者L
在python3.0中,只有一种类型
4、三种函数
hex(数字),oct(数字),bin(数字)将数字转化为十六进制,八进制,二进制,而int(字符串,base)将其他进制的数转化为十进制,这个字符串必须能够转化为数字
>>>num = 10
>>>print(hex(num))
>>>print(oct(num))
>>>print(bin(num))
>>>hex_num = '0x10'
>>>oct_num = '0o10'
>>>bin_num = '0b10'
>>>print(int(hex_num,16))
>>>print(int(oct_num,8))
>>>print(int(bin_num,2))
#输出结果是
0xa
0o12
0b1010
16
8
2
5、在python2.6中可以通过 x <> y 判断x,y是否相等,但是在3.0中通过 x!=y判断,
6、 x < y >z 相当于 x<y and y>z;L[i,j,k]相当于L[slice(i,j,k)]
>>>x = 3
>>>y = 7
>>>z = 4
>>>print(x<y>z)
>>>L = [1,2,3,4,5]
>>>print(L[slice(0,4)])
7、在python2.6中x/y对于整数相除会舍去小数部分,如果是浮点数相处则会保留小数部分,但在在python3.0中无论是整数还是浮点数都会保留小数部分;无论是Python2.6还是python3.0 x//y都回去掉小数部分,保留整数部分(但是需要注意的是:如果除数和被除数有浮点数,则结果带有小数点的整数),同floor函数等效
例如:
>>>print(10/4)
>>>print(10/4.0)
>>>print(10//4)
>>>print(10//4.0)
输出:
2.5
2.5
2
2.0
8、其中floor函数和trunc函数是有区别的
例如:
>>>from math import floor,trunc
>>>print(floor(10/4))
>>>print(floor(-10/4))
>>>print(trunc(10/4))
>>>print(trunc(-10/4))
输出:
2
-3
2
-2
9、hex(数字),oct(数字),bin(数字)能够把数字转为指定进制的数,int(字符串,进制)能够把指定进制的数转化为 10进制数,eval(字符串)具有同样的功能,但是速度不如前一个
例如:
>>>print(hex(10))
>>>print(oct(10))
>>>print(bin(10))
>>>print(int('f',16))
>>>print(int('10',8))
>>>print(int('10',2))
输出
0xa
0o12
0b1010
15
8
2
10、进制数的格式化
例如:
>>>print('{0:b},{1:o},{2:x}'.format(2,8,16))
>>>print('%o,%x' % ( 8,16))
输出:
10,10,10
10,10
11、常用函数
pow(a,b) a的b字方
abs(a) 求a的绝对值
max(a,b,c,d...)求a,b,c,d,....最大值
min(a,b,c,d...)求a,b,c,d.....最小值
sum(列表,集合,元祖)所有元素的和
math.floor(数字),向下取整
math.trunc(数字), 截断小数部分,保留整数部分
round(数字[,精度]) 四舍五入 ,当精度部分存在时,保留精度位小数,当精度不存在时,取整数
12、内置函数在python3.0中位于builtins模块中,而在python2.6中是__buildtins__
13、random模块的使用,要使用random必须先导入random,random有以下方法
random.random()产生一个随机小数
random.randin(a,b) 返回一个在a,b之间的数字
random.choice(序列) 返回一个在序列中值
14、小数类型,小数类型是指精度固定的,得用小数对象Decimal
Deciaml对象位于decimal模块中,要使用这个对象得先导入才行
from decimal import Decimal
Decimal('0.1')+Decimal('0.1')+Decimal('0.1')-Decimal('0.3') #注意括号中必须是字符串,而且当小数位数不一致时,会自动转化为一致的
15、在Decimal中有一个从浮点数转化为小数的函数
Decimal.from_float(1.25) 浮点数1.25能够转话为小数
16、设置所有小数的精度
decimal.getcontext().prec = 数字
17、在Python中有分数Fraction对象
from fractions import Fraction
x = Fraction(1,3)
y = Fraction(2,3)
print(x) #输出是1/3
这些分数能够进行+,-,*,/
分数对象也能够从浮点数转化而来
例如:Fraction(0.25)或者Fraction('0.25')等价于Fraction(1,4)
18、集合
创建一个集合: x = set('abcde'),y = set('bdxyz')
判断某一个原始是否在集合中: 'e' in x 输出是:true
x和y的差集 x-y 输出:a,c,e
x和y的并集 x|y 输出:a,c,b,e,d,y,x,z 相对应的方法是 union
x和y的交集 x&y 输出:b,d 相对应的方法是intersection
x和y的交集的补集 x^y a,c,e,y,x,z
增加一个元素 x.add('u') 输出 abcdeu
增加几个元素 x.update(set('tq')) 输出abcdetq
19、创建集合的集中方式
set(列表) 例如:x = set(['a','b','c'])
set(字符串) 例如:y = set('abc')
{数据} 例如:{'a','b','c'}
20、不能向一个集合中添加序列和字典,但是可以添加元祖,也就是集合中不能包含字典,列表,但是可以包含元祖
例如:
x = set('abc')
x.add([1,2,3]) #错误
x.add({'a':1,'b':2}) #错误
x.add((1,2,3,4))
21、ozenset:元素一经创建,不可增加、删除和修改。因此没有add、pop、discard、remove和所有以_update结尾的方法。但可以作为左值接受赋值。
frozenset和set混合运算时,返回的值以左边的操作变量为准。
frozenset(a) | set(b) 的返回值就是frozenset,
set(a) | frozenset(b) 的返回值就是set:
22、集合解析
例如:
{x**2 for x in [1,2,3,4]}
或者:{x*2 for x in 'ab'}
23、在Python中bool中的False当做0,而True当做1
例如:True ==1 返回值是真
False==0返回值是0