python集set

集set

set翻译为集合
collection翻译为集合类型

set
可变的、无序的、不重复的元素的集合
s = {}空的  是字典
s = {1,2}set


set的元素
set的元素要求必须可以hash
不前学过的不可hash的类型有list、set、bayterry
元素不可索引
set可以迭代

set增加
add(elem)
增加一个元素到set中
如果元素存在则什么都不做
update
合并其他元素到集合中来
参数others必须是可迭代对象
就地修改
(去重特性)

remove (elem)
从set中移除一个元素
元素不存在,抛出keyError异常
discard (elem)
从set中移除一个元素
元素不存在,什么都不做
pop()   
移除并返回任意的元素
空集返回keyerror异常
clear()
移除所有元素


set修改、查询

修改
没有修改
要么删除,要么加入新的元素
查询
无法索引
遍历
可以迭代所有元素

成员运算符
in 和not in 判断元素是否在set中

set和线性结构
线型结构的查询时间复杂度是0(n),即随着数据规模的增大而增加耗时
set、dict等结构,内部使用hash值作为key,时间复杂度可以做到0(1),查询时间和数据规模无关

可hash
数值型int、float、complex
布尔型True、False
字符串string、 bytes
tuple
None
以上都是不可变类型,成为可哈希类型,hashable

set的元素必须是可hash的

集合
基本概念
全集
所有元素的几个。例如实数集,所有实属组成的集合就是全集
子集subset和超集superset
一个集合A所有元素都在另一个集合B内,A是B的子集,B是A的超集
真子集和真超集
A是B的子集,且A不等于B,A就是B的真子集,B是A的真超集
并集:多个集合合并的结果
交集:多个集合的公共部分
差集:集合中出去和其他集合公共部分

集合运算
并集
将连个集合A和B的所有元素合并到一起,组成的集合称作集合A与集合B的并集
union(*others)
返回和多个集合合并后的新的集合
| 等同于union
update(*others)
和多个集合合并,就地修改
|=
等同update

集合运算
交集
intersection(*others)
返回和多个集合的交集
&等同intersection
intersection_update(*others)
获取和多个集合的交集,并就地修改
&=等同intersection_update

差集
difference(*others)
返回和多个集合的差集
-等同于difference
difference_update(*others)
获取和多个集合的差集就地修改
-=
等同difference_update

集合运算
对称差集
(A-B)并(B-A)
symmetric_difference_update(other)
返回和另一个集合的差集并就地修改
^=等同symmetric_difference_update


issubset(other)   <=
判断当前集合是否是另一个集合的子集
set1 < set2
判断set1是否是set2的真子集
issuperset(other)   >=
判断当前集合是否是other的超集
set1 > set2
判断set1是否是set的真超集
isdisjoint(other)
当前集合和另一个集合没有交集
没有交集,返回True
 

Python中,`set` 不是一个函数,而是一种内置的数据结构类型。它用于存储不重复的元素合,并且合中的元素是无序的。可以通过 `set()` 函数来创建一个合。 ### 创建合的方式 1. 使用 `{}` 直接定义: ```python my_set = {1, 2, 3} ``` 2. 使用 `set()` 函数从其他可迭代对象(如列表、元组等)创建: ```python my_set = set([1, 2, 3, 2, 3]) # 结果为 {1, 2, 3} ``` ### 常见操作 以下是一些常见的合操作: 1. **添加元素**:使用 `add()` 方法向合中添加单个元素。 ```python my_set.add(4) print(my_set) # 输出 {1, 2, 3, 4} ``` 2. **移除元素**:可以使用 `remove()` 或 `discard()` 方法删除指定元素。 - `remove()` 如果元素不存在会抛出错误。 - `discard()` 即使元素不存在也不会报错。 ```python my_set.remove(3) # 移除元素3 my_set.discard(5) # 尝试移除元素5,如果不存在不会报错 ``` 3. **清合**:使用 `clear()` 方法清整个合。 ```python my_set.clear() print(my_set) # 输出 set() ``` 4. **合运算**: - 并:使用 `union()` 方法或 `|` 运算符。 ```python set1 = {1, 2, 3} set2 = {3, 4, 5} union_set = set1.union(set2) # 或者 set1 | set2 print(union_set) # 输出 {1, 2, 3, 4, 5} ``` - 交:使用 `intersection()` 方法或 `&` 运算符。 ```python intersection_set = set1.intersection(set2) # 或者 set1 & set2 print(intersection_set) # 输出 {3} ``` - 差:使用 `difference()` 方法或 `-` 运算符。 ```python difference_set = set1.difference(set2) # 或者 set1 - set2 print(difference_set) # 输出 {1, 2} ``` - 对称差:使用 `symmetric_difference()` 方法或 `^` 运算符。 ```python symmetric_diff_set = set1.symmetric_difference(set2) # 或者 set1 ^ set2 print(symmetric_diff_set) # 输出 {1, 2, 4, 5} ``` 5. **判断子和超**: - 判断是否为子:`issubset()` - 判断是否为超:`issuperset()` ```python print(set1.issubset(set2)) # False print(set2.issuperset({3, 4})) # True ``` 6. **合更新**: - `update()` 方法可以将另一个合的元素添加到当前合中。 ```python set1.update(set2) print(set1) # 输出 {1, 2, 3, 4, 5} ``` ### 注意事项 - 合中的元素必须是不可变类型(如数字、字符串、元组),不能包含列表或其他可变类型。 - 合自动去重,相同的元素只会保留一个。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值