标准数据类型
Python3 中有六个标准的数据类型:
Number(数字)
String(字符串)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)
Python3 的六个标准数据类型中:
不可变数据(3个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3个):List(列表)、Dictionary(字典)、Set(集合)。
Number(数字)
Python3支持int、float、bool、complex(复数)。bool是int的子类。
整数类型int
在Python3里,只有一种整数类型int,表示为长整型,没有长度限制。整数可以是二进制,八进制,十进制,十六进制。
二进制是以0b或0B开头,后面跟数字0或1。
八进制是以0o(数字0和小写字母o)或0O(数字0和大写字母O)开头,后面跟0-7。
十进制是以非0开头,后跟0-9。
十六进制是以0x或0X开头,后跟0-9,a-f,A-F。
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
a = 0b10 # 二进制 相当于十进制2
b = 0o76 # 八进制 相当于十进制62
c = 10 # 十进制
d = 0xF9 # 十六进制 相当于十进制249
print(a)
print(b)
print(c)
print(d)
print(type(a)) # type函数的作用是显示对象的类型
print(type(b))
print(type(c))
print(type(d))
|
执行以上程序会输出如下结果:
1
2
3
4
5
6
7
8
|
2
62
10
249
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
|
整数可以添加下划线,方便分组。数字之间和0b 0O 0x等进制说明符之后都可以添加下划线。下划线不影响数字的大小,运行时,会忽略掉下下划线。
例如:
1
2
3
4
5
6
7
8
9
|
a = 0b_10
b = 0o7_6
c = 1_0
d = 0xF_9
print(a)
print(b)
print(c)
print(d)
|
执行以上程序会输出如下结果:
注意: 不能连续添加两个以上下划线,会报语法错误。
例如:
执行以上程序会输出如下结果:
1
2
3
4
5
|
$python3 main.py
File "main.py", line 1
a = 0b__10
^
SyntaxError: invalid token
|
十进制的数字前面不能是0开头的数字,此限制主要是为了区别Python2里的八进制(Python2里面的八进制是以0开始后面跟着数字0-7)。
例如:
执行以上程序会输出如下结果:
1
2
3
4
5
|
$python3 main.py
File "main.py", line 1
c = 0100
^
SyntaxError: invalid token
|
浮点数类型float
带有小数点的数字或者用科学计数法表示的数字,是float类型(科学计数法可能不带小数点)。以下都是浮点数。
例如:
1
2
3
4
5
6
7
8
9
10
11
|
a = 3.14
b = 10. # 也可以写作 b = 10.0
c = .001 # 也可以写作 c = 0.001
print(a)
print(b)
print(c)
print(type(a))
print(type(b))
print(type(c))
|
执行以上程序会输出如下结果:
1
2
3
4
5
6
|
3.14
10.0
0.001
<class 'float'>
<class 'float'>
<class 'float'>
|
浮点数也可以带有下划线,但是不能紧跟在句点后面。
例如:
1
2
3
|
a = 3.1_4 # 可以
b = 1_0. # 可以
a = 3._1_4 # 不可以,会报SyntaxError异常
|
还可以用科学指数法e或者E来表示浮点数。
例如:
1
2
3
4
5
6
7
8
|
a = 3.14e-2 #相当于 3.14 * (-100)
b = 5E2 #相当于 5.0 * 100
print(a)
print(b)
print(type(a)) # type函数的作用是显示对象的类型
print(type(b))
|
执行以上程序会输出如下结果:
1
2
3
4
|
0.0314
500.0
<class 'float'>
<class 'float'>
|
用科学计数法表示浮点数时,请注意,整数和指数部分总是用十进制,可以添加数字0。
例如,下面的a和b是合法的,表示相同大小的数字。
1
2
3
4
5
|
a =3.14e-02
b =03.14e-02
print(a)
print(b)
|
执行以上程序会输出如下结果:
布尔类型bool
bool是int的子类。布尔值只有True、False两个值。
内置函数isinstance()用来判断一个对象是否属于一个已知的类型。isinstance()会认为子类是一种父类类型,考虑继承关系。
例如:
1
2
3
4
5
6
7
8
9
10
11
|
a = False
b = True
c = 10
print(type(a))
print(type(b))
print(isinstance(a,int)) # 输出变量a的类型是否是int类型或者int的子类类型,结果是True
print(isinstance(b,int)) # 输出变量b的类型是否是int类型或者int的子类类型,结果是True
print(isinstance(c,int)) # 输出变量c的类型是否是int类型或者int的子类类型,结果是True
print(isinstance(a,bool)) # 输出变量a的类型是否是bool类型或者bool的子类类型,结果是True
print(isinstance(b,bool)) # 输出变量b的类型是否是bool类型或者bool的子类类型,结果是True
print(isinstance(c,bool)) # 输出变量c的类型是否是bool类型或者bool的子类类型,结果是False
|
执行以上程序会输出如下结果:
1
2
3
4
5
6
7
8
|
<class 'bool'>
<class 'bool'>
True
True
True
True
True
False
|
在数值上下文中(例如,当用作算术运算符时),False转为0,True为1。
例如:
1
2
3
4
5
6
|
t = True
f = False
n = 10
print(t + n) # 输出 11
print(f + n) # 输出 10
|
复数类型complex
复数由实数部分和虚数部分构成,可以用a + bj或a + bJ形式表示,其中a和b是浮点数。属性real可以获取实数部分的值,属性imag获取虚数部分的值。
例如:
1
2
3
4
5
|
c = 3+0.14j
print(type(c))
print(c.real)
print(c.imag)
|
执行以上程序会输出如下结果:
1
2
3
|
<class 'complex'>
3.0
0.14
|
复数的实部a和虚部b都是浮点型。
例如:
1
2
3
4
5
|
c = 3+0.14j
print(type(c))
print(type(c.real))
print(type(c.imag))
|
执行以上程序会输出如下结果:
1
2
3
|
<class 'complex'>
<class 'float'>
<class 'float'>
|
复数可以只有虚数部分,则实数部分是0.0。
例如:
1
2
3
4
5
|
c = 4j
print(c.real)
print(c.imag)
print(type(c.real))
print(type(c.imag))
|
执行以上程序会输出如下结果:
1
2
3
4
|
0.0
4.0
<class 'float'>
<class 'float'>
|
复数的实数和虚数都是浮点类型,所以可以带有下划线,但是不能紧跟在句点后面。
例如:
1
2
3
4
5
6
7
8
9
10
|
a = 2_0 + 1_0j
b = .0_01j
c = 3.14_15_93j
print(a)
print(type(a))
print(b)
print(type(b))
print(c)
print(type(c))
|
执行以上程序会输出如下结果:
1
2
3
4
5
6
|
(20+10j)
<class 'complex'>
0.001j
<class 'complex'>
3.141593j
<class 'complex'>
|
转载请注明本网址。