Python 序列容器总表

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 s2 in lst2 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"]=valst.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#差集

⚠️超级容易混淆坑点汇总(背诵)

  1. 字符串、元组不可变:所有修改操作不会改动自身,会产生新对象
s="abc"s.replace("a","x")print(s)# 还是abc!必须 s = s.replace("a","x")接收返回值
  1. 字典in判断的是key,不是value
d={"name":"小明"}print("小明"ind)# False!print("name"ind)# True
  1. 集合没有下标、不能切片、顺序不可保证,不能st[0]
  2. 元组里面存列表,列表内容可以改,元组只是锁住引用地址
  3. 列表循环的时候不要原地remove/append,会跳过元素、死循环
  4. +拼接:字典、集合不支持+;字符串列表元组支持

🧩快速记忆口诀

字符串:改不动,方法全出新品;
列表:随便改,append remove sort 随便造;
元组:只读,只有count index;
字典:按键干活,keys values items get;
集合:自动去重,无下标,交差并集。