008 Python语法之集合

本文深入探讨了Python中集合的基本概念和特性,包括其天生去重、无序的特点,以及如何通过各种方法如union、intersection、difference等进行集合的并集、交集、差集运算。此外,还详细介绍了集合的子集、父集判断方法以及如何使用枚举进行遍历,同时提供了集合方法如add、update、remove、discard的用法说明。

set集合

集合特点

  1. 天生去重
  2. 无序,每次打印都无序
  3. 没有索引,循环只能for item进行遍历

集合的操作

set1 = {123, "abc", True}
set2 = {123, "abc", False}
差集
set2.difference(set1)

set2 - set1 = {False}
并集
set1.union(set2)

set1 | set2 = {False, True, 'abc', 123}
交集
set1.intersection(set2)

set1 & set2 = {'abc', 123}
补集
set1.symmetric_difference(set2)

set1 ^ set2 = {False, True}
子集
set1.issubset(set2)
父集
set1.issuperset(set2)

一些集合的方法

set() 强制转换成集合,并去重复
set1 = set((1,2,3,4))  # 将元组转换成集合
set1 = set((1,2,3,4,4,3,2,1))  # 将元组转换成集合
add(x) # 添加元素x
set1.add(4)
update(sqe)# 更新集合
set1 = {1, 2, 3, 4}
set1.update([7,5,8,0])
update方法介绍
  1. 参数可以是集合,列表,字符串
  2. 返回值为None,会在原集合上进行更新
remove(x) # 移除元素x
set1.remove(4)
remove方法介绍
  1. 删除,不存在就报错
  2. 第一个参数是移除的元素
discard(x) # 删除元素
myset.discard(1)    
discard(x)
  1. 删除,不存在不会报错
difference(set)
newset = set1.difference(set2)
difference方法介绍(差集)
  1. 显示set1中set2没有的元素
  2. 返回是一个新的集合

利用枚举进行索印遍历

for idx,iddata in enumerate(myset):
    print(idx, iddata)

其他类型转换

set1 = set()
set1 = set([1,2,3,4,5,4,3,2,1])
set1 = set((1,2,3,4,5,4,3,2,1))
set1 = set({1:2,3:4})
set1 = set("abcde")
数据转化详解
  1. list转换成集合会将每一个元素去重之后添加进集合
  2. tuple也是会将每一个元素去重之后添加进集合
  3. 字典仅仅会将键全部存储在集合中
  4. 字符串会将每一个元素去重之后添加进集合

不可变集合 frozenset <class ‘frozenset’>

set3 = frozenset([1, 2, 3, 4])
set3.add(5)     # 会报错,不可变

利用枚举进行索印遍历

for idx,iddata in enumerate(myset):
    print(idx, iddata)
### Python 集合语法与使用实例 集合(set)是一种无序且不重复的数据结构,在 Python 中用于存储唯一的元素。 创建集合的方式有两种: - 使用花括号 `{}` 定义集合,注意空集不能用`{}`表示,而应该使用 `set()` 函数[^1]。 ```python my_set = {1, 2, 3} empty_set = set() ``` - 可以通过调用内置函数 `set()` 将其他可迭代对象转换成集合。 ```python list_to_set = set([1, 2, 3]) string_to_set = set('hello') ``` 向集合中添加新成员可以使用 `.add(element)` 方法;移除指定成员则可以通过 `.remove(element)` 或者 `.discard(element)` 来实现。区别在于当试图删除不存在于集合中的元素时,`.remove()` 会抛出异常,而 `.discard()` 不会有任何反应。 ```python my_set.add(4) # 添加单个元素 my_set.update({5,6}) # 同时添加多个元素 print(my_set) try: my_set.remove(7) # 如果存在就删除该元素,如果不存在就会报错 except KeyError as e: print(f"Element not found: {e}") my_set.discard(8) # 即使元素不在集合内也不会引发错误 ``` 对于两个集合之间的操作有交集(`&`)、并集(`|`)、差集(`-`)以及对称差集(`^`)四种基本运算方式。 ```python a = {1, 2, 3, 4} b = {3, 4, 5} intersection = a & b # 获取共同拥有的元素 union = a | b # 所有不同和相同的元素组合在一起 difference_a_b = a - b # 属于A但不属于B的部分 symmetric_difference = a ^ b # 要么属于A要么属于B但是不会同时存在于两者之中 print(intersection) print(union) print(difference_a_b) print(symmetric_difference) ``` 判断某个特定值是否位于给定集合之内可通过简单的 `in` 关键字来完成测试。 ```python if 1 in my_set: print("Yes") else: print("No") ``` #### 相关问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豆豆orz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值