在 Python 中,所谓 “数据类型”,说白了就是下图中 “值” 的类型。Python 有以下 6 种标准的数据类型。
- 数字(数值)。
- 字符串。
- 列表。
- 元组。
- 字典。
- 集合。

提示: 由于 Python 中一切都是对象,因此这些数据类型实际上都是 “类” ,而变量则是这些类的实例。
Python 数字类型
在 Python 中,数字是最基本的数据类型。所谓的数字,指的就是数学上的数字,比如 10、-10、3.14 等。在 Python 中,数字有 4 种不同的类型:整数(int)、浮点数(float)、复数(complex)和布尔值(bool)。
1. 整数类型(int)
整数类型也叫做 “整型”,它指的就是数学中的整数,包括正整数、负整数和 0,例如 666、-666 等。
示例 1:使用整型
n = 1001
print(n)
print(type(n))运行结果如下。
1001
<class 'int'>分析:
type() 函数用于判断变量的类型,我们在下一节 “Python 判断变量类型” 中会详细介绍。
2. 浮点数类型(float)
浮点数类型也叫做 “浮点型”,它由 “整数” 和 “小数” 两个部分组成,例如 66.66、-0.66 等。
示例 2:使用浮点型
n = 6.0
print(n)
print(type(n))运行结果如下。
6.0
<class 'float'>3. 复数类型(complex)
复数类型(complex)由 “实数” 和 “虚数” 两个部分组成,可以用 a+bj 或 complex(a, b) 表示。其中,复数的实部 a 和虚部 b 都是浮点数。
提示: 复数类型用得并不多,小伙伴们不需要过多深究。
示例 3:使用复数类型
n = 4 + 5j
print(n)
print(type(n))运行结果如下。
(4+5j)
<class 'complex'>4. 布尔型(bool)
整数、浮点数、复数这 3 种类型的值可以有无数多个,但是布尔类型的值只有 2 个:True 和 False。True 表示 “真”,False 表示 “假”。
可能你会觉得很奇怪:“为什么这种数据类型叫布尔值呢?” 实际上布尔是 bool 的音译,是以英国数学家、布尔代数的奠基人乔治·布尔(George Boole)来命名的。
布尔值最大的用途就是:用于选择结构的条件判断。如果你不了解选择结构,也不要着急,在后面章节中会详细介绍。
示例 4:使用布尔型
a = 10
b = 20
if a < b:
print('a小于b')运行结果如下。
a小于b分析:
上面代码定义了两个数字类型的变量:a、b。然后在 if 语句中对 a 和 b 进行大小判断,如果 a 小于 b,则使用 print() 函数输出一个字符串:'a小于b'。其中,if 语句 是用来进行条件判断的,后面章节会介绍。
对于 Python 中的布尔值,小伙伴们还需要清楚以下 2 点。
- Python 中的 True 和 False 这两个值的首字母必须大写,这一点跟其他编程语言不太一样。
- Python 中的布尔类型归属于 “数字” 这个数据类型,这一点跟其他编程语言也是不一样的。其中 True 等价于 1,False 等价于 0。
Python 字符串类型
字符串,从名字上就很好理解,就是一串字符。在 Python 中,字符串都是用英文单引号或英文双引号(注意都是英文)括起来的。此外,字符串中的字符可以是 0 个(即空字符),也可以是 1 个或多个。
示例 5:使用字符串
a = 'Hello, world!'
b = "Hello, world!"
print(a)
print(b)运行结果如下。
Hello, world!
Hello, world!分析:
与数字一样,字符串也是值。在这个示例中,有一点小伙伴们可能感到好奇: “Python 在打印字符串时,有时候使用单引号,有时候使用双引号,两者有什么差别吗?”
其实使用单引号和双引号的结果是完全相同的。那么为什么 Python 同时支持单引号和双引号呢?这是因为在有些情况下,这可能会很有用,请看下面一个示例。
示例 6:单引号与双引号
print("Let's go!")
print('"Hello, world!"she said.')运行结果如下。
Let's go!
"Hello, world!"she said.分析:
在上述代码中,第一个字符串包含一个单引号,因此不能用单引号将整个字符串括起,否则 Python 解释器将报错。
print('Let's go!')上面代码的运行结果如下。
(报错)SyntaxError: invalid syntax这里有 3 个单引号,Python 会认为前两个单引号包含起来的是一个字符串,也就是 'Let' 是一个字符串。但是后面还有一个单引号,此时 Python 就懵了,因为它没有可以配对的另一个单引号,所以就直接报错了。
想要使得运行结果是:Let's go!,我们除了使用一对双引号包含起来,还可以使用 Python 转义字符 来实现。
提示: 对于刚接触 Python 的小伙伴,如果觉得下面介绍的列表、元组、字典等类型比较难理解,可以简单看一遍即可(不需要深究)。后面我们会花非常多的篇幅来详细介绍。
Python 列表类型
在 Python 中,列表用于保存一组数据,我们可以使用中括号 “[]” 来创建一个列表。
语法:
listname = [value1, value2, ... , valueN]说明:
每个数据称之为列表的一个 “元素”,元素与元素之间使用英文逗号隔开。
示例 7:使用列表
# 定义列表
animals = ['ant', 'bee', 'cat', 'dog', 'ewe']
# 获取列表元素
print(animals[0])
print(animals[1])
print(animals[2])运行结果如下。
ant
bee
cat分析:
上面表示创建了一个名为 animals 的列表,该列表中有 5 个元素(都是字符串)。如果想要获取 animals 某一项的值,就可以使用下标的方式来获取。其中,animals[0] 表示获取第 1 项的值,也就是 'ant'。animals[1] 表示获取第 2 项的值,也就是 'bee'……依此类推。
Python 元组类型
在 Python 中,元组是一种跟列表非常相似的数据类型。其中,列表是使用中括号 “[]” 创建的,而元组是使用小括号 “()” 创建的。
语法:
tuplename = (value1, value2, …, valueN)说明:
创建元组,用小括号括起来一堆数据就可以了,数据之间用英文逗号 “,” 隔开。元组跟列表非常相似,两者的很多操作都是相同的,但是它们之间也有着本质上的区别(也是两者唯一的区别):元组的元素不能修改,而列表的元素可以修改。或者,你可以把元组看成是一种特殊的列表。
示例 8:使用元组
lst = [1, 2, 3]
tup = (1, 2, 3)
print(type(lst))
print(type(tup))运行结果如下。
<class 'list'>
<class 'tuple'>分析:
从结果可以看出,列表的类型为 “list”,而元组的类型为 “tuple”,两者是完全不同的数据类型。
Python 字典类型
在 Python 中,我们可以使用大括号 “{}” 来创建一个字典。
语法:
dictname = { key1: value1, key2: value2, ... , keyN: valueN }说明:
字典是由多个 “键值对” 组成的。键与值之间用英文冒号 “:” 分开,然后键值对之间用英文逗号 “,” 隔开。
键值对是两个相关的值,你可以使用键来访问对应的值,与键相关联的值可以是数字、字符串、列表乃至字典。事实上,你可以将任何 Python 对象作为字典中的值。
示例 9:使用字典
# 创建字典
users = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}
# 获取某个键的值
result = users['Lucy']
# 打印结果
print(result)运行结果如下。
1002分析:
上面创建了一个名为 users 的字典,该字典包含了 3 个键值对。users['Lucy'] 表示获取 users 中 'Lucy' 这个键对应的值。
Python 集合类型
在 Python 中,我们也是使用大括号 “{}” 来创建一个集合。与字典不一样,字典的元素是 “键值对”,而集合的元素是 “值”。
语法:
setname = { value1, value2, ... , valueN }说明:
集合是由多个值组成的,两个值之间用英文逗号(,)隔开。对于集合,小伙伴们需要注意以下 3 点。
- 集合不会出现相同的值,如果有相同的值,则只会保留一个,这个跟数学中的集合一样。
- 序列(列表、元组、字符串)是有序的,而字典跟集合是无序的。
- 序列是有序的,因此可以通过下标的方式来获取某一个元素,但是字典和集合都不可以。
示例 10:使用集合
items = { 3, 1, 2, 2, 5, 4, 4 }
print(items)运行结果如下。
{ 1, 2, 3, 4, 5 }分析:
在集合中,如果有相同的值,则只会保留一个。需要特别注意的是,虽然这里的数字看起来是按顺序输出的,但这只是底层计算的一个巧合。集合是完全无序的,每次输出的顺序都可能不同,因此千万不要依赖集合来排序数据。
