Python数据类型和操作
1.Python中的概念层次
一般来说,Python 的程序由模块,语句,表达式,对象组成。
层次结构如下:
1.程序由模块组成
2.模块包含语句
3.语句包含表达式
4.表达式产生对象,并对对象进行处理
我们先从底层学习,先学习Python的内置对象,即内置的一些数据类型,内置数据类型列表如图1所示。由于内置数据类型较多,不可能一次讲完,所以我们会在以后的博客中逐步讲解,这里我们只讲Numbers即数值类型。
图1
2.Numbers数值类型简介
数值类型,包含了整型(int)、浮点型(float)、复数、分数等类型。对于常用的int和float,由于Python不声明变量的类型,所以不能通过类型声明能够区分它们,Python通过是否含有小数点区分它们。这里介绍两个函数用于检测类型和判断类型,type()函数可以用来检测类型,isinstance()判断一个变量或值是不是某个类型。
>>> type(1) <class 'int'> >>> type(1.2) <class 'float'> >>> type('str') <class 'str'> >>> type('hello world!') <class 'str'> >>> isinstance(1.2,float) True >>> isinstance(1,int) True
2.1 强制类型转换
对于从float到int的强制类型转换要注意一点,int强制性类型转换是向0取整,而从int到float的转换不存在问题。>>> int(-2.3) -2 >>> int(2.4) 2 >>>
2.2 常见数值类型运算
数值类型中常见的运算有/,//,%,*,**等。
(1) / 运算符表示浮点除法,即使分子和分母是整数,结果也是浮点数。(2) // 运算符 表示整数除法,这个整数除法返回的是不大于浮点数结果的最大整数,比如5//2=2,浮点结果为2.5,2是不大于2.5的最大整数,-5//2浮点结果是-2.5,-3是 不大于-2.5的最大整数,4//2结果是2。(3)%表示取余(4)**表示指数幂
>>> 3/2 1.5 >>> 3//2 1 >>> 3%2 1 >>> 3.0//2 1.0 >>> 3**2 9 >>> 3*3 9 >>> 5//2 2 >>> -5//2 -3
2.3 分数
Python中要使用分数,首先得引入模块fractions,分数的表示为: fractions.Fraction(A,B),A是分子,B是分母,使用如下:
>>> import fractions
>>> fractions.Fraction(2,3)
Fraction(2, 3)
>>> fractions.Fraction(2,3)*2
Fraction(4, 3)
>>>
2.4 数学运算
首先要引入模块math,一般的三角函数如sin、cos、tan、asin、acos和atan等都有实现,调用方式则类似于math.sin,参数默认是弧度制,math.pi是圆周率,其他简单函数则可以直接调用,如pow,min,max,sum等,这里注意sum的参数是一个序列,可以用元组或列表等表示。
>>> import math >>> math.sin(math.pi/2) 1.0 >>> math.pi 3.141592653589793 >>> >>> math.sqrt(4) 2.0 >>> abs(-1) 1 >>> max(2,3) 3 >>> min(3,4) 3 >>> sum((2,3,4)) 9 >>> pow(2,3) 8 >>> sum([2,3]) 5
注意到sum函数的两次调用的不同,第一次sum((2,3,4))是对(2,3,4)这个元组进行求和,第二次是对列表[2,3]进行求和。
2.5 复数
复数由实部和虚部组成,这里在虚部数值后加j或J即可表示复数,但要注意当虚部的数值为1时不可省略该数值也就是说,1+j或者1-j错误,下面的测试中可以看到1+j这种使用方式出错,使用如下:
>>> 1+3j (1+3j) >>> 1-3j (1-3j) >>> (1+3j)*(1-3j) (10+0j) >>> 1+j Traceback (most recent call last): File "<pyshell#50>", line 1, in <module> 1+j NameError: name 'j' is not defined >>>
2.6 二进制 八进制 十六进制
十六进制的表示,开头为0x或0X,后面是数值
八进制的表示,开头为0o或0O,后面是数值
二进制的表示,开头为0b或0B, 后面是数值
>>> 0X2
2
>>> 0X23
35
>>> 0x23
35
>>> 0o23
19
>>> 0O23
19
>>> 0b1001
9
>>> 0B100
4
>>>
十进制数值在十六进制,八进制,二进制下的表示由oct(),hex(),bin()函数完成。
>>> oct(255)
'0o377'
>>> hex(255)
'0xff'
>>> bin(255)
'0b11111111'
同时Python还提供了由字符串转化为整型的函数int(),使用如下
>>> int('17',8)
15
>>> int('176',16)
374
>>> int('100',2)
4
注意这里第一个参数是字符串,第二个参数是进制,这里的字符串是不需要加0X,0O,0B等前缀的。
Python的一个内置函数eval(),可以执行Python代码,即在参数中输入Python的代码字符串,可以得到结果。比如
>>> eval('1+1')
2
>>> eval('0b0001')
1
2.7 位操作
Python提供了C语言中常用的位操作,包括移位,或,与和异或
更多内容持续更新中
>>> x<<3
32
>>> x>>4
0
>>> x>>5
0
>>> x|3
7
>>> x&0
0
2.8 Decimal
Decimal是一种小数,精确度有限。
>>> from decimal import Decimal
>>> Decimal('0.1')+Decimal('-0.1')
Decimal('0.0')
>>> Decimal('0.1')-Decimal('0.1')
Decimal('0.0')
>>>
2.9 布尔型
布尔型有两个固定的值,True和False,当然有时也可作为整数使用。
>>> True-1
0
>>> True+1
2
>>> False+1
1
>>> False-1
-1
更多内容持续更新中