很多刚开始学Python的朋友,总会遇到这样的困惑:
- 为什么有时候数字能相加,字符串却报错?
- 列表和元组到底有什么区别?
- 什么时候用字典,什么时候用集合?
其实,这些问题都指向同一个核心概念——**数据类型**。
今天,我们就用最通俗的方式,把Python的常用数据类型一次讲清楚。
一、什么是“数据”?
数据在计算机中:归根结底是 0 和 1
计算机不认识“苹果”、“18”、“True”这些东西。它只认识两种状态:通电 和 断电。
所以,任何数据在计算机底层,都是一串 0 和 1 组成的二进制代码。
比如:
类比一下,你就懂了
可以把计算机想象成一个只有两色的灯泡阵列(亮=1,灭=0):
仅仅一个灯泡:只能表示 2 种状态(亮/灭)
8 个灯泡:可以表示 256 种不同状态
现代计算机里面,这样的“灯泡”有几十亿个
我们写的 "Hello"、100、True,最终都会被编程语言翻译成一串 0 和 1,塞给计算机执行。
二、什么是数据类型?
简单来说,**数据类型就是告诉Python“这是什么”**。
就像你不会把电话号码当成数学数字去计算一样,Python也需要区分不同类型的数据,才能正确地处理它们。
三、基础数据类型(必须掌握)
1️⃣ 整数(int)
就是没有小数点的整数。
```pythonage = 18year = 2026negative = -10```
可以做加减乘除、取余数等数学运算。
2️⃣ 浮点数(float)
就是带小数点的数。
```pythonpi = 3.14price = 19.99temp = -2.5```
⚠️ 注意:浮点数运算可能有一点点误差(比如0.1+0.2=0.30000000000000004),这是计算机底层的问题,正常现象。
3️⃣ 字符串(str)
用引号(支持:单引号''; 双引号""; 三单引号''''''; 三双引号"""""")包裹的文本。其中三引号支持多行文本。
```pythonname = "小明"city = '上海'message = """多行文本"""```
**常用操作:**
```python# 拼接"Hello" + " " + "World"# 重复"哈" * 3 # 哈哈哈# 取长度len("Python") # 6```
4️⃣ 布尔类型(bool)
只有两个值:`True`(真)和 `False`(假)。
```pythonis_student = Trueis_graduated = False```常用于条件判断:```pythonif is_student: print("是学生")```
四、容器数据类型(重点中的重点)
5️⃣ 列表(list)
特点:**有序、可变**,用方括号 `[]`。
```pythonfruits = ["苹果", "香蕉", "橙子"]scores = [90, 85, 92, 88]mixed = [1, "hello", True, 3.14] # 可以混合```
**常用操作:**
```python# 取值(从0开始)fruits[0] # 苹果# 添加fruits.append("葡萄")# 删除fruits.remove("香蕉")# 修改fruits[1] = "草莓"# 切片(取一段)fruits[0:2] # 前两个```
💡 **生活类比**:列表就像购物清单,可以随便增删改、调换顺序。
6️⃣元组(tuple)
特点:**有序、不可变**,用圆括号 `()`。
```pythoncolors = ("红", "绿", "蓝")point = (10, 20)```
和列表的区别:**一旦创建,不能修改**(不能添加、删除、修改元素)。
💡 **生活类比**:元组像你的身份证号,定了就改不了。
7️⃣ 字典(dict)
特点:**键值对**存储,用花括号 `{}`。
```pythonperson = { "name": "张三", "age": 25, "city": "北京"}```
**常用操作:**
```python# 取值person["name"] # 张三# 赋值/修改person["age"] = 26# 添加新键值对person["job"] = "工程师"# 获取所有键person.keys()# 获取所有值person.values()```
💡 **生活类比**:字典就像通讯录,找电话靠“姓名”这个键,查得快。
8️⃣ 集合(set)
特点:**无序、不重复**,用花括号 `{}` 但无键值对。
```pythontags = {"Python", "数据", "编程"}numbers = {1, 2, 3, 3, 3} # 自动去重 → {1, 2, 3}```
**常用操作:**
```python# 添加tags.add("AI")# 删除tags.remove("数据")# 并集{1, 2} | {2, 3} # {1, 2, 3}# 交集{1, 2} & {2, 3} # {2}```
💡 **生活类比**:集合就像班级的花名册,每个人只出现一次,没有顺序。
五、速查对比表
六、常见坑点 & 小技巧
🔥 坑1:字符串和数字不能直接相加
```python# ❌ 错误"我今年" + 18 # ✅ 正确"我今年" + str(18)```
🔥 坑2:列表的拷贝陷阱
```pythona = [1, 2, 3]b = a # b只是a的别名b.append(4)print(a) # [1,2,3,4] a也被改了!# 正确拷贝b = a.copy()```
🔥 坑3:用字典时小心KeyError
```python# ❌ 键不存在会报错person["salary"]# ✅ 安全取值person.get("salary", 0) # 不存在返回0```
七、如何选择用哪种数据类型?
问自己三个问题:
1️⃣ **需要修改吗?** → 需要→列表/字典;不需要→元组
2️⃣ **需要找得快吗?** → 需要→字典(用键查询)
3️⃣ **需要去重吗?** → 需要→集合
写在最后
数据类型是Python的地基,地基越稳,上层建筑越牢固。
建议新手朋友:
- 每学一种类型,立刻在交互环境里敲几行代码
- 多练习 `type()` 函数,看看每个数据是什么类型
- 遇到报错不要慌,先检查数据类型是否匹配
📌 本文代码可左右滑动查看完整示例
如果觉得有用,欢迎**点赞+在看+转发**给正在学Python的朋友!
**下期预告**:Python的条件判断和循环,让代码学会“思考”
*保持好奇,保持敲码。我们下期见!* 👋