python---集合
1. 什么是集合{}?
集合(set)是一个无序的不重复元素序列。它是可迭代的,没有重复元素(每个元素都是唯一的)的
○ 集合中的元素不能重复。
○ 集合中的元素是不可变的(不能修改),但整个集合是可变的。
○ 没有索引附加到python集中的任何元素。因此,它们不支持任何索引或切片操作。
2. 创建集合:不能直接用{}创建空集合,{}表示的是空字典
set_val = {1, 2, 3, 4}
empty_set = set()
str_val = 'hello Python' set_val = set(str_val) print(set_val) # 运行结果: {' ', 'y', 't', 'e', 'l', 'n', 'h', 'o', 'P'} 无序的,去重的
set_val = {1, 'hello', (1, 2), [1, 2, 3]} print(set_val) # 运行结果: TypeError: unhashable type: 'list', 集合里边的元素应该是不可变数据
3. 集合的常见操作
增 add()
set_val = {1, 'hello', (1, 2)} set_val.add('python') print(set_val)
改 update()
set_val = {1, 'hello', (1, 2)} new_set = {'python', 'C++'} set_val.update(new_set) print(set_val) # 运行结果: {1, (1, 2), 'hello', 'python', 'C++'} 无序的
删
del 删除整个集合
set_val = {1, 'hello', (1, 2)} new_set = {'python', 'C++'} set.update(new_set) del new_set print(set_val) # 运行结果: {1, (1, 2), 'hello'} 无序的
pop() 随机删除元素
set_val = {1, 'hello', (1, 2)} set_val.pop() print(set_val)
remove()移除指定元素,当元素不存在时提示KeyError
set_val = {1, 'hello', (1, 2)} set_val.remove(1) print(set_val) # 运行结果: {1(1, 2), 'hello'} 无序的 set_val = {1, 'hello', (1, 2)} set_val.remove(2) print(set_val) # 运行结果:KeyError: 2
discard() 移除指定元素,当元素不存在时,不报错
set_val = {1, 'hello', (1, 2)} set_val.discard((1, 2)) print(set_val) # 运行结果: {1, 'hello'} 无序的 set_val = {1, 'hello', (1, 2)} set_val.discard(2) print(set_val) # 运行结果:{'hello', 1, (1, 2)} 无序的
查 in
set_val = {1, 'hello', (1, 2)} if 1 in set_val: print('该元素在集合里') else: print('该元素不在集合里') # 运行结果: 该元素在集合里
集合的运算
交集---intersection()函数:移除两个集合都不存在的元素,方法返回一个存在相同元素的新集合
set_a = {1, 'a', (1, 2)} set_b = {1, 'b', (1, 2, 3)} set_val = set_a.intersection(set_b) print(set_val) print(set_a) print(set_b) """ 运行结果:生成一个新的集合, set_a和set_b没变化 {1}---set_val {1, (1, 2), 'a'}---set_a {1, 'b', (1, 2, 3)}---set_b """
intersection_update()函数:移除两个集合都不存在的元素
set_a = {1, 'a', (1, 2)} set_b = {1, 'b', (1, 2, 3)} set_val = set_a.intersection_update(set_b) print(set_val) print(set_a) print(set_b) """ 运行结果: None {1}---set_a {1, 'b', (1, 2, 3)}---set_b """
并集---union(): 方法返回两个集合的并集,即包含了所有集合的元素,重复的元素只出现一次
set_a = {1, 'a', (1, 2)} set_b = {1, 'b', (1, 2, 3)} set_val = set_a.union(set_b) print(set_val) print(set_a) print(set_b) """ 运行结果:生成一个新的集合, set_a和set_b没变化 {1, (1, 2), 'a', (1, 2, 3), 'b'}---set_val {1, (1, 2), 'a'}---set_a {1, 'b', (1, 2, 3)}---set_b """
差集---different(): 移除两个集合都存在的元素,方法返回一个移除都存在元素后的集合
set_a = {1, 'a', (1, 2)} set_b = {1, 'b', (1, 2, 3)} set_val = set_a.difference(set_b) print(set_val) print(set_a) print(set_b) """ 运行结果:set_a移除都存在的元素1,生成一个新的集合, set_a和set_b没变化 {(1, 2), 'a'}---set_value {1, 'a', (1, 2)}---set_a {1, (1, 2, 3), 'b'}---set_b """
difference_update():移除两个集合都存在的元素,没有返回值
set_a = {1, 'a', (1, 2)} set_b = {1, 'b', (1, 2, 3)} set_val = set_a.difference_update(set_b) print(set_val) print(set_a) print(set_b) """ 运行结果:set_a移除都存在的元素1, set_b没变化 None {(1, 2), 'a'}---set_a {1, (1, 2, 3), 'b'}---set_b """
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)