Python 四大数据类型(列表、集合、字典、元组)增删改查方法速查表
--------彭彭老师
一、增删改查总览表
| 操作 | 列表 (List) | 集合 (Set) | 字典 (Dict) | 元组 (Tuple) |
|---|
| 增加 | append(), insert(), extend(), + | add(), update() | dict[key] = value, update(), setdefault() | ❌ 不可变 |
| 删除 | remove(), pop(), clear(), del | remove(), 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] = val | d['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() | [] |
| del | del 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 |
| in | 2 in list | 判断是否存在 | 2 in [1,2,3] | True |
| len() | len(list) | 获取长度 | len([1,2,3]) | 3 |
| 集合 | in | 2 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 |
| in | 2 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)
lst.insert(1, 99)
lst.extend([5,6])
lst.remove(99)
popped = lst.pop()
lst.clear()
lst = [1,2,3,4]
lst[1] = 99
lst.sort()
lst.reverse()
print(lst[0])
print(lst.index(4))
print(3 in lst)
集合(Set)- 完整示例
s = {1, 2, 3}
s.add(4)
s.update([5,6,6])
s.remove(4)
s.discard(10)
popped = s.pop()
s.clear()
s = {1,2,3}
s.remove(2)
s.add(99)
print(2 in s)
print(len(s))
字典(Dict)- 完整示例
d = {'a': 1, 'b': 2}
d['c'] = 3
d.update({'d': 4})
d.setdefault('e', 5)
d.pop('a')
d.popitem()
del d['b']
d.clear()
d = {'a': 1, 'b': 2}
d['a'] = 99
d.update({'a': 100})
print(d['a'])
print(d.get('c', 0))
print('a' in d)
print(d.keys())
print(d.values())
print(d.items())
元组(Tuple)- 完整示例
t = (1, 2, 3, 2)
t2 = t + (4, 5)
t3 = t * 2
del t
t = (1,2,3,4)
t2 = t[:2] + (99,) + t[3:]
t = (1,2,3,2)
print(t[0])
print(t.index(2))
print(t.count(2))
print(3 in t)
print(len(t))
五、选择指南
| 使用场景 | 推荐类型 | 原因 |
|---|
| 需要频繁增删改 | 列表 | 可变、有序、支持索引 |
| 需要快速查找、去重 | 集合 | 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[:]: |
所有评论(0)