计算机处理的对象有多种类型,这些类型在计算机中称为“数据类型”。
Python3 中常见的数据类型有:
- Number(数字)
- String(字符串)
- bool(布尔类型)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
在这其中,布尔类型是特殊的数字类型;数字、字符串是基本数据类型; 列表、元组、集合被称为容器类型,由数字、字符串类型构成; 字典是一种常用的特殊结构,同样由数字、字符串构成。 这样,最基本数据类型主要分为两类,一类是数字形式的,称为“数值类型”;还有一类是字符串。
在Python语言中数据类型还有可变、不可变的区别。Python3 的六个标准数据类型中:
- 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
- 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
此外还有一些高级的数据类型,如: 字节数组类型(bytes)。
记住,表达式是值和操作符的组合,它们可以通过求值成为单个值。
“数值类型”是一类值,每个值都只属于一种数值类型。例如,值 -2
和 30
属于“整型”值。
整型(或int)数值类型表明值是整数。 带有小数点的数,如 3.14
,称为“浮点型”(或 float
)。
请注意,尽管 42
是一个整型,但 42.0
是一个浮点型。
2
2
3E-2
0.03
在 Python 中查看类型,使用 type()
内置函数。
type(2)
int
type("2")
str
type(1+3j)
complex
在 Python 中支持复数表达式。复数由实数部分和虚数部分构成,可以用 a + bj
,或者 complex(a,b)
表示, 复数的实部 a
和虚部 b
都是浮点型。 整数与浮点型数混合运算时会将整数转换为浮点数。
布尔类型即 True 或 False。 在 Python 中,True 和 False 都是关键字,表示布尔值。 布尔类型可以用来控制程序的流程,比如判断某个条件是否成立,或者在某个条件满足时执行某段代码。
特点
bool 是 int 的子类,因此布尔值可以被看作整数来使用,其中 True 等价于 1。 布尔类型可以和其他数据类型进行比较,比如数字、字符串等。在比较时,Python 会将 True 视为 1,False 视为 0。 布尔类型可以和逻辑运算符一起使用,包括 and、or 和 not。这些运算符可以用来组合多个布尔表达式,生成一个新的布尔值。 布尔类型也可以被转换成其他数据类型,比如整数、浮点数和字符串。在转换时,True 会被转换成 1,False 会被转换成 0。
可以使用 bool()
函数将其他类型的值转换为布尔值。
以下值在转换为布尔值时为 False:None、False、零 (0、0.0、0j)、空序列(如 ''
、()
、[]
)和空映射(如 {}
)。
其他所有值转换为布尔值时均为 True。
实例:
布尔类型的值和类型。
a = True
b = False
print(type(a))
<class 'bool'>
print(type(b))
<class 'bool'>
布尔类型的整数表现。
print(int(True))
1
print(int(False))
0
使用 bool()
函数进行转换。
print(bool(0))
False
print(bool(42))
True
print(bool(''))
False
print(bool('Python'))
True
print(bool([]))
False
print(bool([1, 2, 3]))
True
布尔逻辑运算。
print(True and False)
False
print(True or False)
True
print(not True)
False
布尔比较运算。
print(5 > 3)
True
print(2 == 2)
True
print(7 < 4)
False
布尔值在控制流中的应用。
if True:
print("This will always print")
if not False:
print("This will also always print")
This will always print This will also always print
x = 10
if x:
print("x is non-zero and thus True in a boolean context")
x is non-zero and thus True in a boolean context
注意: 在 Python 中,所有非零的数字和非空的字符串、列表、元组等数据类型都被视为 True,只有 0、空字符串、空列表、空元组等被视为 False。因此,在进行布尔类型转换时,需要注意数据类型的真假性。
前面说明的都是常规的数字,都是常见的十进制数值。在大多数计算机语言中,整数除了十进制表达,一般都还有十六进制数、八进制数和二进制数的表达方式,Python也是这样。
在 Pthon 中使用 0x
开头的“数字”表示十六进制的数。对于 9
以后的数字,没有对应的阿拉伯数字。则使用 a
表示 10
, b
表示 11
,依次类推,最后 f
表示 15。 在十六进制表达中不区分“字母”的大小写。
0xAF
175
注意这里,在 Jupyter 中,会对表达式进行求值,从而得到对应的 10 进制的结果。
0xaF
175
在 Python 中使用 0o
开头的数字表示八进制, 注意 0
后面是英文字母 o
。
0o1234
668
在八进制表达中,数字 8
, 9
不能出现:
# 数字9不能出现
# 0o129 #此段代码会报错
0b
开关的表达式表示二进制。在二进制表达式中,只能使用数字 0
与 1
:
0b1011010010
722
这些表示法都以 0
打头。
Python 数值类型转换
有时候,需要对数据内置的类型进行转换,数值类型的转换,只需要将数值类型作为函数名即可。
int(x)
将x
转换为一个整数。float(x)
将x
转换到一个浮点数。complex(x)
将x
转换到一个复数,实数部分为x
,虚数部分为0
。complex(x, y)
将x
和y
转换到一个复数,实数部分为x
,虚数部分为y
。x
和y
是数字表达式。long(x [,base] )
: 将x
转换为一个长整数hex(x)
: 将一个整数转换为一个十六进制字符串oct(x)
: 将一个整数转换为一个八进制字符串bin(x)
: 将一个整数转换为一个二进制字符串
以下实例将浮点数变量 a
转换为整数,这个过程可能称为“取整”更合适一点。
a = 3.1415926
int(a)
3
转换为复数表达式。
complex(a)
(3.1415926+0j)
计算机,最初的设计的目的就是帮助人们进行计算。在计算机语言中实现了很多数学中的计算表达方法, 这些表达方法大多数与数学表达方法一致,但也有一些不同。
Juypyter 解释器可用作功能强大的计算器。请尝试执行如下操作:
2 + 2
4
结果应该为4,这不难。下面的运算呢?
53672 + 235253
288925
还是觉得没什么?不可否认,这是很常见的运算。(下面假设对如何使用计算器很熟悉,知道 1 + 2 * 3
和 (1 + 2) * 3
有何不同。)
所有常见算术运算符的工作原理都与预期的一致。
除法运算的结果为小数,即浮点数(float或floating-point number)。
1 / 2
0.5
1 / 1
1.0
如果想丢弃小数部分,即执行整除运算,可使用双斜杠 //
。
1 // 2
0
1 // 1
1
5.0 // 2.4
2.0
在较旧的Python 2.x 版本中,对整数执行常规除法运算的结果与使用双斜杠类似。 有一些变通的方法可以达到与 Python 3.x 一致执行方式。这里不多介绍了。 至此,已了解了基本的算术运算符(加法、减法、乘法和除法), 但还有一种与整除关系紧密的运算没有介绍。
1 % 2
1
这是求余(求模)运算符。x % y的结果为x除以y的余数。换而言之,结果为执行整除时余 下的部分,即x % y等价于x - ((x // y) * y)。
10 // 3
3
10 % 3
1
在这里,10 // 3
为 3
,因为结果向下取整,而 3*3
为 9
,因此余数为 1
。
9 // 3
3
9 % 3
0
将 9
除以 3
时,结果正好为 3
,没有向下取整,因此余数为 0
。
2.75 % 0.5
0.25
从最后一个示例可知,求余运算符也可用于浮点数。 这种运算符甚至可用于负数,但可能不那么好理解。
10 % 3
1
10 % -3
-2
-10 % 3
2
-10 % -3
-1
也许不能通过这些示例一眼看出求余运算的工作原理,但通过研究与之配套的整除运算可帮助理解。
10 // 3
3
10 // -3
-4
-10 // 3
-4
-10 // -3
3
基于除法运算的工作原理,很容易理解最终的余数是多少。对于整除运算,需要明白的一个 重点是它向下圆整结果。因此在结果为负数的情况下,圆整后将离0更远。这意味着对于-10 // 3, 将向下圆整到-4,而不是向上圆整到-3。
这里要介绍的最后一个运算符是乘方(求幂)运算符。
请注意,乘方运算符的优先级比求负(单目减)高,因此 -3**2
等价于 -(3**2)
。
-3 ** 2
-9
如果要计算的是 (-3)**2
,必须使用括号进行明确。
(-3) ** 2
9
import time
now = time.time()
now
1744677799.3495803
round(now, 2)
1744677799.35
round(now, 4)
1744677799.3496
round(now)
1744677799
导入 time
,将 time.time()
保存在now
中之后,
调用 round(now,2)
,将 now
舍 入到小数点后两位数字,
round(now,4)
舍入到小数点后四位数字,
round(now)
舍入到最接近的整数。