一、集合 (Set) 核心定义集合是一个无序、不重复的元素序列。元素之间用逗号分隔用{}或set()函数创建。核心特性自动去重重复元素只保留一个元素必须是不可变类型不能放列表、字典无序不支持索引访问可进行交集、并集、差集等集合运算重要提醒空集合必须用set()因为{}是用来创建空字典的。二、集合的创建方式1. 直接使用{}定义最常用set1{1,2,3,4}# 自动去重name{牛奶,面包,鸡蛋,牛奶}# 重复元素被去掉print(name)# {苹果, 牛奶, 鸡蛋, 面包}2. 使用set()函数将可迭代对象转为集合set2set([4,5,6,7])# 从列表创建set3set((4,5,6,7))# 从元组创建nameset()# 创建空集合必须用set()3. 推导式创建了解即可类似列表推导式根据条件快速生成集合。4. 不可变集合 (frozenset)用于需要“不能修改的集合”的场景如作为字典的键fsfrozenset([1,2,3,4])d{fs:这是不可变集合作为键}创建方式总结方式语法适用场景{}直接定义{1, 2, 3}手动定义少量元素set()函数set([1,2,3])将列表/元组/字符串等转为集合set()空集合set()创建空集合不能用{}推导式{x for x in ...}按规则生成集合frozenset()frozenset([1,2])创建不可修改的集合三、集合的基本操作增、删、查、集合运算1. 增加元素方法作用示例add(elem)添加单个元素s.add(苹果)update(iterable)批量添加可迭代对象中的元素s.update([苹果,香蕉])first_setset()first_set.add(苹果)# 添加单个元素first_set.update([苹果,香蕉])# 批量添加2. 删除元素方法作用元素不存在时remove(elem)删除指定元素报错 (KeyError)discard(elem)删除指定元素不报错推荐pop()随机删除并返回一个元素集合为空时报错clear()清空所有元素保留空集合—name{1,2,3,4,5}name.remove(3)# 删除3不存在会报错name.discard(10)# 删除10不存在也不报错更安全name.pop()# 随机删除一个元素name.clear()# 清空集合3. 查询元素无索引只能判断存在或遍历name{1,2,3,4,5}# 判断元素是否存在print(1inname)# Trueprint(10notinname)# True# 遍历集合注意无序foriinname:print(i)# 获取集合长度print(len(name))# 5# 判断集合是否为空print(notname)# False非空返回True空集合返回False4. 集合间运算集合最强大的功能是数学集合运算有两种等价写法运算符和方法。运算类型运算符方法说明并集|union()a和b的所有元素去重交集intersection()a和b都有的元素差集-difference()a有但b没有的元素对称差集^symmetric_difference()a和b中互不相同的元素a{1,2,3}b{2,3,4}print(a|b)# {1, 2, 3, 4} 并集print(ab)# {2, 3} 交集print(a-b)# {1} 差集a有b没有print(a^b)# {1, 4} 对称差集5. 子集与交集判断方法作用示例issubset()判断是否为子集b.issubset(a)→ b是a的子集issuperset()判断是否为父集a.issuperset(b)→ a包含bisdisjoint()判断两个集合是否有交集没有交集返回Truea{1,2,3}b{1,2}print(b.issubset(a))# Trueb是a的子集print(a.isdisjoint({4,5}))# True没有共同元素四、集合内置方法速查表增删类方法描述add(elem)添加单个元素update(iterable)批量添加元素remove(elem)删除指定元素不存在报错discard(elem)删除指定元素不存在不报错pop()随机删除并返回一个元素clear()清空所有元素运算类方法描述对应运算符union()返回并集|intersection()返回交集difference()返回差集-symmetric_difference()返回对称差集^intersection_update()原地更新为交集—difference_update()原地更新为差集—symmetric_difference_update()原地更新为对称差集—判断类方法描述isdisjoint()判断是否无交集无交集返回Trueissubset()判断是否为子集issuperset()判断是否为父集其他方法/函数描述copy()浅复制集合len(set)返回集合元素个数in / not in判断元素是否存在今日核心总结集合 无序 不重复用{}定义空集合必须用set()。自动去重是最大特点适合做数据去重。元素必须不可变不能放列表、字典。增删查三板斧增add()单元素、update()批量。删discard()更安全不报错remove()更严格报错。查用in判断存在用for遍历无序。集合运算 数学集合并集|、交集、差集-、对称差集^。运算符和方法等价运算符更简洁直观。issubset()判子集、isdisjoint()判无交集。与列表、字典的对比特性列表 (list)字典 (dict)集合 (set)符号[]{key:val}{}或set()有序是3.7有序否可重复是键不重复否自动去重可变是是是索引支持按键访问不支持注:已经使用DeepSeek进行整理精简核心内容些许不理解的配合个人笔记进行理解。
从0开始转入Ai应用层,从python学起第六天
发布时间:2026/6/4 15:32:58
一、集合 (Set) 核心定义集合是一个无序、不重复的元素序列。元素之间用逗号分隔用{}或set()函数创建。核心特性自动去重重复元素只保留一个元素必须是不可变类型不能放列表、字典无序不支持索引访问可进行交集、并集、差集等集合运算重要提醒空集合必须用set()因为{}是用来创建空字典的。二、集合的创建方式1. 直接使用{}定义最常用set1{1,2,3,4}# 自动去重name{牛奶,面包,鸡蛋,牛奶}# 重复元素被去掉print(name)# {苹果, 牛奶, 鸡蛋, 面包}2. 使用set()函数将可迭代对象转为集合set2set([4,5,6,7])# 从列表创建set3set((4,5,6,7))# 从元组创建nameset()# 创建空集合必须用set()3. 推导式创建了解即可类似列表推导式根据条件快速生成集合。4. 不可变集合 (frozenset)用于需要“不能修改的集合”的场景如作为字典的键fsfrozenset([1,2,3,4])d{fs:这是不可变集合作为键}创建方式总结方式语法适用场景{}直接定义{1, 2, 3}手动定义少量元素set()函数set([1,2,3])将列表/元组/字符串等转为集合set()空集合set()创建空集合不能用{}推导式{x for x in ...}按规则生成集合frozenset()frozenset([1,2])创建不可修改的集合三、集合的基本操作增、删、查、集合运算1. 增加元素方法作用示例add(elem)添加单个元素s.add(苹果)update(iterable)批量添加可迭代对象中的元素s.update([苹果,香蕉])first_setset()first_set.add(苹果)# 添加单个元素first_set.update([苹果,香蕉])# 批量添加2. 删除元素方法作用元素不存在时remove(elem)删除指定元素报错 (KeyError)discard(elem)删除指定元素不报错推荐pop()随机删除并返回一个元素集合为空时报错clear()清空所有元素保留空集合—name{1,2,3,4,5}name.remove(3)# 删除3不存在会报错name.discard(10)# 删除10不存在也不报错更安全name.pop()# 随机删除一个元素name.clear()# 清空集合3. 查询元素无索引只能判断存在或遍历name{1,2,3,4,5}# 判断元素是否存在print(1inname)# Trueprint(10notinname)# True# 遍历集合注意无序foriinname:print(i)# 获取集合长度print(len(name))# 5# 判断集合是否为空print(notname)# False非空返回True空集合返回False4. 集合间运算集合最强大的功能是数学集合运算有两种等价写法运算符和方法。运算类型运算符方法说明并集|union()a和b的所有元素去重交集intersection()a和b都有的元素差集-difference()a有但b没有的元素对称差集^symmetric_difference()a和b中互不相同的元素a{1,2,3}b{2,3,4}print(a|b)# {1, 2, 3, 4} 并集print(ab)# {2, 3} 交集print(a-b)# {1} 差集a有b没有print(a^b)# {1, 4} 对称差集5. 子集与交集判断方法作用示例issubset()判断是否为子集b.issubset(a)→ b是a的子集issuperset()判断是否为父集a.issuperset(b)→ a包含bisdisjoint()判断两个集合是否有交集没有交集返回Truea{1,2,3}b{1,2}print(b.issubset(a))# Trueb是a的子集print(a.isdisjoint({4,5}))# True没有共同元素四、集合内置方法速查表增删类方法描述add(elem)添加单个元素update(iterable)批量添加元素remove(elem)删除指定元素不存在报错discard(elem)删除指定元素不存在不报错pop()随机删除并返回一个元素clear()清空所有元素运算类方法描述对应运算符union()返回并集|intersection()返回交集difference()返回差集-symmetric_difference()返回对称差集^intersection_update()原地更新为交集—difference_update()原地更新为差集—symmetric_difference_update()原地更新为对称差集—判断类方法描述isdisjoint()判断是否无交集无交集返回Trueissubset()判断是否为子集issuperset()判断是否为父集其他方法/函数描述copy()浅复制集合len(set)返回集合元素个数in / not in判断元素是否存在今日核心总结集合 无序 不重复用{}定义空集合必须用set()。自动去重是最大特点适合做数据去重。元素必须不可变不能放列表、字典。增删查三板斧增add()单元素、update()批量。删discard()更安全不报错remove()更严格报错。查用in判断存在用for遍历无序。集合运算 数学集合并集|、交集、差集-、对称差集^。运算符和方法等价运算符更简洁直观。issubset()判子集、isdisjoint()判无交集。与列表、字典的对比特性列表 (list)字典 (dict)集合 (set)符号[]{key:val}{}或set()有序是3.7有序否可重复是键不重复否自动去重可变是是是索引支持按键访问不支持注:已经使用DeepSeek进行整理精简核心内容些许不理解的配合个人笔记进行理解。