LLM系列:1.python入门:8.集合型对象(SetFrozenset)
集合型对象(SetFrozenset)一. 集合基础集合set是一种无序且可变类型的容器。可以将集合看作是字典的一种特殊形式——由字典的 Keys 所组成的列表。因此集合具备两个核心特征其一集合内的元素必须是不可变对象类型如数字、字符串、元组其二集合内的元素不能重复。冻集合frozenset则是集合的不可变版本除了不支持修改增、删操作外其他基本性质与运算和集合完全一致。1. 集合与冻集合的创建(1). 集合的直接创建使用大括号{}进行标注元素之间用逗号隔开。# 直接创建集合s1{1,2,3}# 无序性及包含不同类型必须是不可变类型的体现s2{1,2,Hi,(1,2,3)}# 注由于 {} 表示空字典创建空集合必须使用 set()s_emptyset()(2). 使用 set() 函数可将列表、元组、字符串、range 等可迭代对象转化为集合。# 列表转集合set([1,2,3])# {1, 2, 3}# 字符串转集合会被拆分为单个字符并去重set(Hello)# {H, e, l, o}(3). 冻集合的使用 (frozenset)冻集合只能通过frozenset()函数进行创建。一旦创建其内部元素不可被修改或删除。# 将列表或集合转化为冻集合fr1frozenset([1,2,3])fr2frozenset({1,2,3})# 注冻集合作为不可变对象自身也可以作为另一个集合的元素set([1,2,frozenset([1,2])])(4). 利用集合去重利用集合元素不可重复的特性可以非常方便地对列表进行去重操作。注去重过程会自动调整元素顺序本质上是无序变量转化为有序变量。l1[1,1,2,3]# 转化为集合去重再转化为列表ls1list(set(l1))# [1, 2, 3]二. 集合的常用方法与操作1. add - 添加元素作用在集合中添加一个新元素。由于集合无序因此没有特定的插入位置。冻集合不支持此方法。set.add(elem)参数元素 (elem) 需要添加到集合中的目标对象Any必须是不可变类型。返回值成功 无返回值NoneType直接在原集合对象上进行修改。示例s1{1,2,3}# 在 s1 集合中添加元素 4s1.add(4)# s1 变为 {1, 2, 3, 4}2. remove - 删除指定元素作用删除集合中指定的元素。若指定元素不存在则会报错。冻集合不支持此方法。set.remove(elem)参数元素 (elem) 需要从集合中移除的目标对象Any。返回值成功 无返回值NoneType直接在原集合对象上进行修改。示例s1{1,2,3,4}# 删除集合中的 4s1.remove(4)# s1 变为 {1, 2, 3}3. pop - 随机弹出元素作用随机删除并返回集合中的一个元素实际是按照内部哈希重排列后的顺序进行删除。冻集合不支持此方法。set.pop()参数无参数None。返回值成功 返回被弹出的那个元素对象Any。如果集合为空则会报错。示例s2{(1,2),1,2,Hi}# 随机删除一个元素并将其返回vals2.pop()# val 可能变为(1, 2)# s2 变为 {1, 2, Hi}4. intersection或- 交集运算作用提取出两个或多个集合中共同拥有的元素。set1set2set.intersection(other)参数其他集合 (other) 参与交集运算的其他可迭代对象Iterable如 set 或 frozenset。返回值成功 返回一个新的集合对象set 或 frozenset包含两者共同的元素。注 还可以使用intersection_update()直接在原集合上覆盖更新不返回新集合。示例s1{1,2,3}s2{2,3,4}# 使用运算符 或 intersection 方法s1s2# 返回 {2, 3}s1.intersection(s2)# 返回 {2, 3}# 使用 intersection_update 方法原地修改s1.intersection_update(s2)# s1 变为 {2, 3}5. union或|- 并集运算作用将两个集合中的所有元素合并在一起并自动去重。set1|set2set.union(other)参数其他集合 (other) 参与并集运算的其他可迭代对象Iterable。返回值成功 返回一个新的集合对象set 或 frozenset包含两者的所有去重元素。注 还可以使用update()方法直接将新元素并入原集合不返回新集合。示例s1{1,2,3}s2{2,3,4}# 使用运算符 | 或 union 方法s1|s2# 返回 {1, 2, 3, 4}s1.union(s2)# 返回 {1, 2, 3, 4}# 使用 update 方法原地修改s1.update(s2)# s1 变为 {1, 2, 3, 4}6. difference或-- 差集运算作用提取出存在于当前集合中但不存在于另一个集合中的元素当前集合减去共同部分。set1-set2set.difference(other)参数其他集合 (other) 参与差集运算的其他可迭代对象Iterable。返回值成功 返回一个新的集合对象set 或 frozenset。注 还可以使用difference_update()直接在原集合上覆盖更新。示例s1{1,2,3}s2{2,3,4}# 存在于 s1 中但不在 s2 中的元素s1-s2# 返回 {1}s1.difference(s2)# 返回 {1}# 使用 difference_update 方法原地修改s1.difference_update(s2)# s1 变为 {1}7. symmetric_difference或^- 补集运算 (对称差集)作用提取出两个集合中不重复的元素集合即两者并集减去两者的交集。set1^set2set.symmetric_difference(other)参数其他集合 (other) 参与补集运算的其他可迭代对象Iterable。返回值成功 返回一个新的集合对象set 或 frozenset。注 还可以使用symmetric_difference_update()直接在原集合上覆盖更新。示例s1{1,2,3}s2{2,3,4}# 提取不重复的独立元素s1^s2# 返回 {1, 4}s1.symmetric_difference(s2)# 返回 {1, 4}# 使用 symmetric_difference_update 方法原地修改s1.symmetric_difference_update(s2)# s1 变为 {1, 4}8. issubset - 子集判断作用判断当前集合是否被完全包含在另一个集合中。set.issubset(other)参数其他集合 (other) 作为父集参考的目标容器Iterable。返回值成功 如果被完全包含则返回True否则返回Falsebool。示例s1{1,2,3}s2{2,3}# 判断 s2 是否是 s1 的子集s2.issubset(s1)# 返回 True9. issuperset - 超集判断作用判断当前集合是否完全包含了另一个集合。set.issuperset(other)参数其他集合 (other) 作为子集参考的目标容器Iterable。返回值成功 如果完全包含对方则返回True否则返回Falsebool。示例s1{1,2,3}s2{2,3}# 判断 s1 是否包含了 s2s1.issuperset(s2)# 返回 True10. isdisjoint - 无交集判断作用判断两个集合是否完全没有共同元素即是否有交集。set.isdisjoint(other)参数其他集合 (other) 需要参与对比的另一集合Iterable。返回值成功 如果两个集合完全没有交集则返回True如果有任何相同元素则返回Falsebool。示例s3{1,2}s4{3}# 判断 s3 和 s4 是否完全不相交s3.isdisjoint(s4)# 返回 True
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2524654.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!