Python 四大数据类型(列表、集合、字典、元组)增删改查方法速查表

         --------彭彭老师

一、增删改查总览表

操作列表 (List)集合 (Set)字典 (Dict)元组 (Tuple)
增加append(), insert(), extend(), +add(), update()dict[key] = value, update(), setdefault()❌ 不可变
删除remove(), pop(), clear(), delremove(), discard(), pop(), clear()pop(), del dict[key], clear(), popitem()❌ 不可变
修改list[i] = x, sort(), reverse()先删后加(无直接修改)dict[key] = value, update()❌ 不可变
查询index(), count(), in, len()in, len(), 不支持索引dict[key], get(), keys(), values(), items()index(), count(), in

二、详细方法对比表

1. 增加操作

数据类型方法语法说明示例结果
列表append(x)list.append(x)末尾添加一个元素[1,2].append(3)[1,2,3]
insert(i, x)list.insert(i, x)指定位置插入[1,3].insert(1,2)[1,2,3]
extend(iter)list.extend([4,5])末尾添加多个元素[1,2].extend([3,4])[1,2,3,4]
+ 运算符[1,2] + [3,4]合并列表(新列表)[1,2] + [3,4][1,2,3,4]
集合add(x)set.add(x)添加单个元素{1,2}.add(3){1,2,3}
update(iter)set.update([3,4])添加多个元素{1,2}.update([3,4]){1,2,3,4}
| 运算符{1,2} | {3,4}集合并集{1,2} | {3,4}{1,2,3,4}
字典dict[key] = vald['new'] = 5添加/修改键值对{'a':1}['b']=2{'a':1,'b':2}
update(dict2)d.update({'b':2})合并字典{'a':1}.update({'b':2}){'a':1,'b':2}
setdefault(k,v)d.setdefault('b',2)键不存在时添加{'a':1}.setdefault('b',2){'a':1,'b':2}
元组❌不可变,无法添加可用 + 创建新元组(1,2) + (3,4)(1,2,3,4)

2. 删除(Delete)操作

数据类型方法语法说明示例结果
列表remove(x)list.remove(2)删除第一个匹配项[1,2,3].remove(2)[1,3]
pop(i)list.pop(1)删除并返回索引i[1,2,3].pop(1)返回2,列表[1,3]
clear()list.clear()清空列表[1,2,3].clear()[]
deldel list[1]删除元素或列表del [1,2,3][1][1,3]
集合remove(x)set.remove(2)删除元素(不存在报错){1,2,3}.remove(2){1,3}
discard(x)set.discard(2)删除元素(不存在不报错){1,2,3}.discard(5){1,2,3}
pop()set.pop()删除并返回任意元素{1,2,3}.pop()返回1,集合{2,3}
clear()set.clear()清空集合{1,2,3}.clear()set()
字典pop(key)dict.pop('a')删除并返回键的值{'a':1}.pop('a')返回1,字典{}
popitem()dict.popitem()删除并返回末对键值{'a':1}.popitem()('a',1),字典{}
del dict[key]del d['a']删除键值对del {'a':1}['a']{}
clear()dict.clear()清空字典{'a':1}.clear(){}
元组❌不可变,无法删除无法修改--

3. 修改操作

数据类型方法语法说明示例结果
列表索引赋值list[1] = 99修改指定位置[1,2,3][1]=99[1,99,3]
切片赋值list[1:3] = [8,9]替换切片[1,2,3,4][1:3]=[8,9][1,8,9,4]
sort()list.sort()原地排序[3,1,2].sort()[1,2,3]
reverse()list.reverse()原地反转[1,2,3].reverse()[3,2,1]
集合❌无直接修改先删除再添加s.remove(2); s.add(5){1,3,5}
字典键赋值dict['a'] = 100修改键的值{'a':1}['a']=100{'a':100}
update()dict.update({'a':100})更新键值对{'a':1}.update({'a':100}){'a':100}
元组❌不可变,无法修改可用切片创建新元组(1,2,3)[:2] + (99,) + (3,)(1,2,99,3)

4. 查询操作

数据类型方法语法说明示例结果
列表索引访问list[1]通过索引获取[1,2,3][1]2
index(x)list.index(2)查找元素索引[1,2,3].index(2)1
count(x)list.count(2)统计出现次数[1,2,2,3].count(2)2
in2 in list判断是否存在2 in [1,2,3]True
len()len(list)获取长度len([1,2,3])3
集合in2 in set判断是否存在2 in {1,2,3}True
len()len(set)获取长度len({1,2,3})3
❌不支持索引和切片无序结构--
字典键访问dict['a']通过键取值(不存在报错){'a':1}['a']1
get(key)dict.get('b', 0)安全取值(可设默认){'a':1}.get('b',0)0
keys()dict.keys()获取所有键{'a':1}.keys()dict_keys(['a'])
values()dict.values()获取所有值{'a':1}.values()dict_values([1])
items()dict.items()获取键值对{'a':1}.items()dict_items([('a',1)])
in'a' in dict判断键是否存在'a' in {'a':1}True
元组索引访问tuple[1]通过索引获取(1,2,3)[1]2
index(x)tuple.index(2)查找元素索引(1,2,3).index(2)1
count(x)tuple.count(2)统计出现次数(1,2,2,3).count(2)2
in2 in tuple判断是否存在2 in (1,2,3)True
len()len(tuple)获取长度len((1,2,3))3

三、特性对比表

特性列表 (List)集合 (Set)字典 (Dict)元组 (Tuple)
有序性✅ 有序❌ 无序✅ 有序(Python 3.7+)✅ 有序
可变性✅ 可变✅ 可变✅ 可变❌ 不可变
元素唯一性❌ 可重复✅ 唯一✅ 键唯一,值可重复❌ 可重复
索引支持✅ 支持❌ 不支持✅ 通过键✅ 支持
切片支持✅ 支持❌ 不支持❌ 不支持✅ 支持

四、代码示例汇总

列表(List)- 完整示例

lst = [1, 2, 3]

# 增
lst.append(4)           # [1,2,3,4]
lst.insert(1, 99)       # [1,99,2,3,4]
lst.extend([5,6])       # [1,99,2,3,4,5,6]

# 删
lst.remove(99)          # [1,2,3,4,5,6]
popped = lst.pop()      # popped=6, lst=[1,2,3,4,5]
lst.clear()             # []

# 改
lst = [1,2,3,4]
lst[1] = 99             # [1,99,3,4]
lst.sort()              # [1,3,4,99]
lst.reverse()           # [99,4,3,1]

# 查
print(lst[0])           # 99
print(lst.index(4))     # 1
print(3 in lst)         # True

集合(Set)- 完整示例

s = {1, 2, 3}

# 增
s.add(4)                # {1,2,3,4}
s.update([5,6,6])       # {1,2,3,4,5,6}(自动去重)

# 删
s.remove(4)             # {1,2,3,5,6}(不存在报错)
s.discard(10)           # 不报错
popped = s.pop()        # 删除并返回任意元素
s.clear()               # set()

# 改(先删后加)
s = {1,2,3}
s.remove(2)
s.add(99)               # {1,3,99}

# 查
print(2 in s)           # False
print(len(s))           # 2
# 不支持索引:print(s[0])  # TypeError

字典(Dict)- 完整示例

d = {'a': 1, 'b': 2}

# 增
d['c'] = 3              # {'a':1, 'b':2, 'c':3}
d.update({'d': 4})      # {'a':1, 'b':2, 'c':3, 'd':4}
d.setdefault('e', 5)    # 键'e'不存在时添加

# 删
d.pop('a')              # 返回1,删除键'a'
d.popitem()             # 删除并返回最后键值对
del d['b']              # 删除键'b'
d.clear()               # {}

# 改
d = {'a': 1, 'b': 2}
d['a'] = 99             # {'a':99, 'b':2}
d.update({'a': 100})    # {'a':100, 'b':2}

# 查
print(d['a'])           # 100(键不存在报错)
print(d.get('c', 0))    # 0(安全取值)
print('a' in d)         # True
print(d.keys())         # dict_keys(['a','b'])
print(d.values())       # dict_values([100,2])
print(d.items())        # dict_items([('a',100), ('b',2)])

元组(Tuple)- 完整示例

t = (1, 2, 3, 2)

# 增(创建新元组)
t2 = t + (4, 5)         # (1,2,3,2,4,5)
t3 = t * 2              # (1,2,3,2,1,2,3,2)

# 删(无法修改原元组)
# 只能删除整个元组
del t                   # 删除元组变量

# 改(无法修改,只能创建新元组)
t = (1,2,3,4)
t2 = t[:2] + (99,) + t[3:]  # (1,2,99,4)

# 查
t = (1,2,3,2)
print(t[0])             # 1
print(t.index(2))       # 1(第一次出现位置)
print(t.count(2))       # 2
print(3 in t)           # True
print(len(t))           # 4

五、选择指南

使用场景推荐类型原因
需要频繁增删改列表可变、有序、支持索引
需要快速查找、去重集合O(1)查找、元素唯一
需要键值对映射字典O(1)查找、键值关联
需要保护数据不被修改元组不可变、可哈希
需要作为字典的键元组可哈希(列表/集合/字典不可)
需要保持插入顺序列表/字典/元组都保持顺序(集合无序)

六、常见错误与注意事项

数据类型常见错误正确做法
列表lst.remove(x) 元素不存在先判断 if x in lst: lst.remove(x)
集合s[0] 索引访问使用 for x in s 遍历
字典d['key'] 键不存在使用 d.get('key', default)
元组t[0] = 5 修改元素元组不可变,需创建新元组
通用循环时删除元素遍历副本 for x in lst[:]:
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐