python基本数据类型
python中的基本数据类型可以分为两类
数字类型(number):
- 整型(int)
- 浮点型(float)
- 布尔值(Bool)
- 复数(complex)
组合数据(composite Data):
- 字符串(String)
- 列表(List)
- 元组(Tuple)
- 字典(Dictionary)
- 集合(Set)
同时还有特殊的一种类型:空类型(None)
整型(int)
整型(Int):包括正整数、负整数和零。
在Python中,整型不限制大小,没有Python 2.X中的长整型(Long)。
整数可以是二进制、八进制、十进制和十六进制整数。
- 十进制整数,使用0~9共10个数字表示,
如3、-4、0等。
- 二进制整数,以0B或0b开头,
如:0B1011(相当于- 十进制的11)、-0b101(相当于十进制的-5)。
- 八进制整数,以0o或0O 开头,
如:0o56(相当于十进制的46)、-0O145(相当于十进制的-101)。
- 十六进制整数,以0x 或0X开头,
如:0xAF(相当于十进制的175)、-0X123(相当于十进制的-291)。
不同进制的数可以通过python内置函数相互转化:
- bin()函数:将其他进制的数转化为二进制数。
- int()函数:将其他进制数转化为十进制数。
- oct()函数:将其他进制数转化为八进制数。
- hex()函数:将其他进制数转化为十六进制数。
print("十进制数→二进制数:", bin(56))
print("十进制数→八进制数:", oct(-32))
print("十六进制数→十进制数:", int(0x48))
print("十进制数→十六进制数:", hex(18))
输出结果为:
十进制数→二进制数: 0b111000
十进制数→八进制数: -0o40
十六进制数→十进制数: 72
十进制数→十六进制数: 0x12
在python3.6上的版本中可以支持数字键使用_分隔符进行分隔,这样来大大提高可读性
print(3_4_5_6)
print(1_2_3.4_5_6)
输出结果:
3456
123.456
浮点型
浮点类型(Float)类型:包括整数部分和小数部分,十进制形式,也可以用科学计数法表示(带有指数的浮点数)。
十进制表示的浮点数,如0.33、-7.88、0.0等
科学计数法表示的浮点数,如32.6e18(相当于3.
26×1019),-9.268E-3(相当于-0.009268)。
在Python中,浮点数有大约17位有效数字,绝对值范围
10-308到10308的,不支持32位的单精度浮点数。
范例:
浮点数的不同输出格式:
f = 32.6e18
print("f =",f)
print("f = %e"%f)
print("f = %f"%f)
运行结果:
f = 3.26e+19
f = 3.260000e+19
f = 32600000000000000000.000000
浮点数的运算
浮点数的运算总是会出现误差,这一点在python中也会有出现浮点数的运算
误差
以下面的代码为例:
a = 0.1
b = 0.2
print("a + b =",a + b)
#比较浮点数大小.
if((a + b) == 0.3):
print("(a + b) == 0.3")
else:
print("(a + b) != 0.3")
正常在进行计算时0.1+0.2应该为0.3,但是结果却是这样的
a + b = 0.30000000000000004
(a + b) != 0.3
在最后会出现不定的误差,但是这种误差非常的小,于是为了使最终的结果保持正确,一般使用浮点数计算进行判定的语句中我们都需要先确定其精确度,来保持结果的正确
上面的列子中我们只需要保证误差小于我们的精确度就可以保证我们的结果的正确性,于是上面的代码可以这样修改
a = 0.1
b = 0.2
print("a + b =",a + b)
#比较浮点数大小.
if(abs(a+b-0.3)<0.01):
print("(a + b) == 0.3")
else:
print("(a + b) != 0.3")
这样就可以保证结果在精确度内,就算出现误差结果也不会出错
复数类型
复数(Complex):由实数部分和虚数部分构成,
复数的形式:a + bj、a + bJ或**complex(a, b)**表示
如12.6 + 5j,-7.4-8.3J,complex(2.3,4.5)。
复数z可以用z.real来获得实部,用z.imag来获得虚部。
范例:复数的运算
c1 = 1.2 + 5.3j
c2 = 4.6 + 60.8J
a=complex(2.3,4.5)
print("c1 + c2 =",c1 + c2)
print(a)
运行结果如下:
c1 + c2 = (5.8+66.1j)
(2.3+4.5j)
当把复数作为一个对象进行输出时会自动的在其两边加上括号
布尔类型
布尔类型(Bool)的常量包括True 和 False,分别表示真和假。
非0数字、非空字符串、非空列表、非空元组、非空字典、非空集合等在进行条件判断时均视为真(True);反之视为假(False)。
例如:判断列表是否为空
信阳 = ["息县","罗山","固始","淮滨"]
if 信阳:
print("列表'信阳'不为空!")
else:
print("列表'信阳'为空!")
运行结果:
列表'信阳'不为空
列表不为空判断为真
布尔类型的常量(True和False)如果出现在算术运算中,True 被当作 1,False 被当作 0
>>> print(True + 2)
3
>>> print(False + 2)
2
字符串类型
在Python中,字符串属于不可变有序序列
可使用单引号、双引号、三单引号或三双引号作为定界符
不同的定界符之间可以互相嵌套。
三引号可以创建多行字符串,如注释
注意
:在Python中,不支持字符类型,单个字符也是字符串。
Python为字符串中的每个字符分配一个数字来指代这个元素的位置,即索引。
第一个元素的索引是0,第二个元素的索引是1,以此类推。
同时,字符串还支持反向索引,字符串中最后一个字符的索引是-1,倒数第二个字符的索引是-2,以此类推(见下图)。
范例:字符串的访问
>>> str = "sophiscated"
>>> str #整个字符串.
'sophiscated'
>>> str[1] #索引为1的字符.
'o'
>>> str[2:] #从索引2开始的所有字符.
'phiscated'
>>> str[:] #整个字符串.
'sophiscated'
>>> str[:4] #索引为4之前的所有字符.
'soph'