Python 序列容器总表
Python 序列&容器总表(str字符串 / list列表 / tuple元组 / dict字典 / set集合)
📌重点标记:🔒不可变;✅可变;❌不支持该操作;⚠️高频坑点
符号说明:s字符串,lst列表,t元组,d字典,st集合
| 功能 | 字符串 str(🔒不可变) | 列表 list(✅可变) | 元组 tuple(🔒不可变) | 字典 dict(✅可变) | 集合 set(✅可变) |
|---|---|---|---|---|---|
| 定义写法 | "abc"'abc' | [1,2,3] | (1,2,3) | {"k1":1,"k2":2} | {1,2,3} |
| 定义空xx | "" | [] | () | {} | set() |
| 包含单个元素 | s = "hi" | lst = [10] | t = (20,) | st = {30} | d = {"a":40}) |
| 下标取值 | s[0]✅ | lst[0]✅ | t[0]✅ | d["key"]按键取值 | ❌无下标,无序 |
切片[::] | s[1:3]✅ | lst[1:3]✅ | t[1:3]✅ | ❌不支持切片 | ❌不支持切片 |
| 长度len() | len(s)✅ | len(lst)✅ | len(t)✅ | len(d)键值对数量 | len(st)✅ |
| in成员判断 | "a" in s | 2 in lst | 2 in t | "key" in d判断键 | 2 in st✅ |
| 循环for遍历 | 遍历字符 | 遍历元素 | 遍历元素 | 遍历keys | 遍历元素 |
拼接+ | "a"+"b" | [1]+[2] | (1,)+(2,) | ❌不支持+ | ❌不支持+ |
重复* | "hi"*3 | [0]*3 | (1,)*3 | ❌不支持* | ❌不支持* |
| 修改内部元素 | ❌不可修改s[0]='x'报错 | lst[0]=99✅ | ❌不可修改t[0]=99报错 | d["k"]=100新增/修改key | ❌没有下标 |
| 追加/添加 | s += "xx"生成新字符串 | lst.append(x)末尾追加lst.extend(可迭代对象)批量追加 | ❌无追加方法 | d["newkey"]=val | st.add(x)添加单个st.update(可迭代对象)批量加 |
| 删除元素 | ❌不能原地删,切片生成新串 | lst.pop(index)按索引删返回值lst.remove(val)按值删第一个匹配del lst[index] | ❌无删除方法 | d.pop(key)按键删除取值del d["key"] | st.remove(x)删除(不存在报错)st.discard(x)删除(不存在不报错) |
| 清空 | s = ""重新赋值 | lst.clear() | ❌ | d.clear() | st.clear() |
| 排序 | sorted(s)返回列表,原字符串不变 | lst.sort()原地升序sorted(lst)返回新列表 | sorted(t)返回列表 | ❌ | sorted(st)返回列表 |
| 反转 | s[::-1]新字符串 | lst.reverse()原地反转lst[::-1]新列表 | t[::-1]新元组 | ❌ | ❌无序,没有反转 |
| 去重 | ❌无直接方法,转集合 | list(set(lst))(丢失顺序) | tuple(set(t))丢失顺序 | ❌ | 集合本身自动去重 |
| 内置拷贝 | 无 | lst.copy()浅拷贝 | 无 | d.copy() | st.copy() |
| 最大最小max/min | ✅ | ✅ | ✅ | 对key做max | ✅ |
📍各自专属常用方法(高频,考试写代码必用)
1. str 字符串(全部方法返回新字符串,原字符串不变!🔒不可变)
s.split(",")# 按分隔符切割,返回列表s.join(列表)# 把列表元素拼接成字符串s.strip()# 去除首尾空白s.replace("a","b")# 替换字符s.find("ab")# 查找,返回下标,找不到返回‑1s.startswith("x")# 判断开头s.endswith("x")# 判断结尾2. list 列表(大多原地修改✅,会改变原列表)
lst.append(x)lst.extend([1,2])lst.insert(index,value)# 指定位置插入lst.index(val)# 根据值找下标lst.count(val)# 统计元素出现次数3. tuple元组🔒几乎没有修改方法,只有2个方法
t.index(val)t.count(val)# 没有append、remove、sort!4. dict字典
d.keys()# 获取所有键d.values()# 获取所有值d.items()# 获取 (key,value) 成对元组d.get(key,默认值)# 安全取值,key不存在返回默认,不会报错d.pop(key)5. set集合(去重、交集差集并集)
st.add()st.discard()#集合运算st1&st2#交集st1|st2#并集st1-st2#差集⚠️超级容易混淆坑点汇总(背诵)
- 字符串、元组不可变:所有修改操作不会改动自身,会产生新对象
s="abc"s.replace("a","x")print(s)# 还是abc!必须 s = s.replace("a","x")接收返回值- 字典
in判断的是key,不是value
d={"name":"小明"}print("小明"ind)# False!print("name"ind)# True- 集合没有下标、不能切片、顺序不可保证,不能
st[0] - 元组里面存列表,列表内容可以改,元组只是锁住引用地址
- 列表循环的时候不要原地remove/append,会跳过元素、死循环
+拼接:字典、集合不支持+;字符串列表元组支持
🧩快速记忆口诀
字符串:改不动,方法全出新品;
列表:随便改,append remove sort 随便造;
元组:只读,只有count index;
字典:按键干活,keys values items get;
集合:自动去重,无下标,交差并集。
