我挖掘了一个巨牛的 人工智能 学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站
https://www.captainbed.cn/kh
一、基础总览表
二、逐个详细拆解
1. 列表 list []
特性
- 可变:支持增、删、改元素
lst = [1, 2, 3]lst[0] = 99 # 修改lst.append(4) # 新增lst.pop() # 删除
- 有序
- 允许重复
适用场景
2. 元组 tuple ()
特性
- 不可变(核心特点):定义后不能修改、新增、删除任何元素
t = (1,2,3)t[0] = 99 # 直接报错 TypeError
- 有序
适用场景
小细节:单元素元组必须加逗号 (5,),(5) 只是数字括号,不是元组。
逗号才是元组的灵魂!
Python 语法里,圆括号 () 有两个身份:
- 数学括号
- 元组标记:靠逗号
, 识别,只要里面有逗号,才认定是元组。
1. 对比两段代码
# 写法1:(5) 只有括号,无逗号a = (5)print(type(a)) # <class 'int'>,就是普通整数# 写法2:(5,) 带末尾逗号b = (5,)print(type(b)) # <class 'tuple'>,真正的元组
(5)(5,):逗号是元组的标志性符号,告诉解释器:这是一元组。
2. 多元素元组验证(逗号才是本体,括号可省略)
元组真正区分不靠括号,靠逗号:
# 正常多元素元组t1 = (1, 2, 3)print(type(t1))# 去掉括号,照样是元组t2 = 1, 2, 3print(type(t2))
输出都是 tuple。 由此可见:逗号才是元组的核心标识,括号只是辅助包装。
3. 字典 dict {key: value}
特性
- 可变
- 有序
- key 要求:必须是不可变类型(数字、字符串、元组),不能重复;重复 key 会覆盖旧值
- 不能用下标数字取值,只能通过
dict["key"] 按键查找
d = {"name":"小明", "age":20}d["age"] = 21 # 修改valued["sex"] = "男" # 新增键值对
适用场景
- 一对一映射关系:用户信息、配置参数、ID 对应数据;
4. 集合 set {1,2,3}
特性
- 可变集合 set
- 无序:没有下标,不能通过
set[0]取值,每次打印顺序随机 - 自动去重:重复元素存入直接丢弃
s = {1,1,2,2,3}print(s) # {1,2,3}
- 元素限制:只能存不可变类型(数字、字符串、元组),列表 / 字典不能放入集合
- 专属能力:集合运算(交集、并集、差集)
a = {1,2,3}b = {3,4,5}print(a & b) # 交集 {3}print(a | b) # 并集 {1,2,3,4,5}print(a - b) # 差集 {1,2}
适用场景
三、高频易混考点
- 可变 vs 不可变核心区分
- 可变:list /dict/set → 内存原地修改,不生成新对象
- 不可变:tuple /str/int → 修改只能新建对象,原数据不变
- 哪些能做字典 key、集合元素? 只有不可变类型:int、float、str、tuple; list、dict、set 可变,禁止作为 key / 集合成员。
- 有序 vs 无序
- 有序:list、tuple、dict (3.7+),支持下标 / 按插入顺序遍历
- 去重需求优先用集合
lst = list(set(原列表))
四、极简一句话总结
有序真正的含义是:插入顺序被记住
# 字典从 Python 3.7 开始有序d = {}d["c"] = 3d["a"] = 1d["b"] = 2print(list(d.keys())) # ['c', 'a', 'b'] —— 和插入顺序一致# 集合依然无序s = {"apple", "banana", "cat", 99999}print(s)# 随机种子开启后,每次打印顺序完全不一样
所以"有序"是指:遍历时,元素出现的顺序和当初插入的顺序一致。