前言
集合(set)是Python中无序、不可重复的数据容器,日常去重、交集差集运算高频使用。很多新手只会add(),其实集合一共有3种添加元素的方法,适用场景完全不同:
set.update():批量添加多个可迭代对象(列表、字符串、元组、集合等)
本文分方法讲解、代码示例、易错坑总结,代码可直接复制运行。
一、add():添加单个元素(最常用)
语法
集合变量.add(元素)
特性
示例1:基础添加数字、字符串
# 创建空集合
s = set()
# 添加单个数字
s.add(10)
# 添加字符串
s.add("python")
# 添加元组(元组不可变,允许放入集合)
s.add((1,2,3))
print(s)
# 输出:{(1, 2, 3), 10, 'python'}
示例2:添加重复元素自动去重
s = {1,2,3}
s.add(2) # 2已存在,无任何变化
s.add(4)
print(s)
# 输出:{1, 2, 3, 4}
易错坑演示:add不能传多个元素/列表
s = {1,2}
# 错误写法1:一次性传多个值
# s.add(3,4) # TypeError: add() takes exactly one argument (2 given)
# 错误写法2:传入列表(可变类型)
# s.add([5,6]) # TypeError: unhashable type: 'list'
二、update():批量添加一组元素(推荐批量场景)
语法
集合变量.update(可迭代对象)
# 支持同时传入多个可迭代对象,逗号分隔
集合变量.update(列表,字符串,元组,集合)
特性
- 参数必须是可迭代对象:list、tuple、str、set、range;
示例1:传入列表批量添加
s = {1,2}
# 传入列表,批量新增
s.update([3,4,5,2]) # 2重复自动过滤
print(s)
# 输出:{1, 2, 3, 4, 5}
示例2:传入字符串(拆分单个字符)
s = set()
s.update("hello")
# 字符串被拆分为 h e l l o,自动去重l
print(s)
# 输出:{'h', 'o', 'l', 'e'}
示例3:同时传入多个可迭代对象
s = {10}
# 同时传入列表、元组、集合
s.update([20,30], (30,40), {40,50})
print(s)
# 输出:{10, 20, 30, 40, 50}
示例4:传入range快速生成数字集合
s = set()
s.update(range(1,6)) # 1,2,3,4,5
print(s)
# 输出:{1, 2, 3, 4, 5}
区分 add() 和 update() 核心对比
s1 = {1}
s1.add((2,3)) # add把元组整体当成1个元素
print(s1) # {1, (2, 3)}
s2 = {1}
s2.update((2,3)) # update拆开元组,分别添加2、3
print(s2) # {1, 2, 3}
核心区别:add接收单个哈希元素,update接收可迭代序列并拆解。
三、|= 运算符:集合合并添加
语法
set1 |= set2
# 等效 set1.update(set2)
特性
示例
a = {1,2,3}
b = {3,4,5}
a |= b
print(a)
# 输出:{1, 2, 3, 4, 5}
如果需要合并列表,要先转集合:
a = {1,2}
lst = [2,3,4]
a |= set(lst)
print(a) # {1,2,3,4}
四、三种添加方法场景总结
五、高频实操小案例(实用代码片段)
案例1:列表去重,用update快速写入集合
# 原始重复列表
data = [1,1,2,2,3,4,4,5]
res_set = set()
res_set.update(data)
print(res_set) # {1,2,3,4,5}
案例2:循环逐个add添加元素
num_set = set()
for i in range(5):
num_set.add(i)
print(num_set) # {0, 1, 2, 3, 4}
案例3:收集文本所有不重复字符
text = "python public account"
char_set = set()
char_set.update(text)
print(char_set)
# 输出所有不重复字符:{'p','y','t','h','o','n',' ','u','b','l','i','c','a','d'}
六、常见报错避坑总结
- add传多个参数报错:add只支持1个参数,批量用update;
- add传入列表报错:列表是可变类型,无法哈希,不能放入集合;
- update直接传数字报错:数字不是可迭代对象,
update(5)会报错;
结尾
集合添加元素是Python基础高频知识点,分清add()和update()就能搞定90%的场景。后续会更新集合删除、交集、差集运算教程,关注不丢失~