一、 集合的介绍
- 集合的元素要求必须不可变:数字、字符串、布尔值和元组
- 集合本身是可变数据
- 集合中的元素具有天然去重功能
- 集合的元素是无序的
- 集合功能:去重、关系测试
二、 集合的创建
方法 1:
setvar = {'a',1,{"aaa"},True}
方法 2:
setvar = set(setvar1)
三、 集合的增删
集合的增
set1.add('bbb')
set1.update('ccc') #迭代增加
集合的删除
set1.remove('aaa') #删除某个固定元素
set1.pop() #随机删除
set1.clear()#清空集合
del set1 # 删除该集合
四、 集合的关系(高中数学知识)
1. 交集
1、 set1&
set2
2、 Set1.intersection
(set2)
2. 差集
-
set1
-
set2、set2-
set1 -
set1.
difference
(set2)
3. 反交集
-
set1
^
set2 -
Set1.
summetric_difference
(set2)
4. 并集
-
set1
|
set2 -
Set1.
union
(set2)
5. 超集(父集?)
-
set1
>
set2 -
Set1.
issuperset
(set2)
6. 子集
-
Set1
<
set2 -
Set1.
issubset
(set2)
五、 冰冻集合
冰冻集合:是不可变的,存在哈希值,好处是它可以作为字典的key,也可以作为其它集合的元素。缺点是一旦创建便不能更改,没有add,remove方法。
Set1 =frozenset
(set2)
六、 其他方法
- in 判断一个元素是否在某个集合中
- 集合不支持加法运算(列表支持),但支持减法运算(差集)
- 对于一个重复无序列表,使用 set+list 方法,可以完成去重+排序,但是这个排序不一定对
七、 练习题
lst=[1,6,98,3,5,23,8,3,2,12,78,3,2,1,65,3,6,8,4,12,4,6,4,2,1,4,76,89,5,9]
print(list(set(lst))) #[1, 98, 3, 2, 5, 6, 65, 8, 4, 9, 12, 76, 78, 23, 89]
setvar = set(lst)
print(setvar) #{1, 98, 3, 2, 5, 6, 65, 8, 4, 9, 12, 76, 78, 23, 89}
lst1 = list(setvar)
print(lst1) #[1, 98, 3, 2, 5, 6, 65, 8, 4, 9, 12, 76, 78, 23, 89]
lst2=sorted(lst1,reverse=True)
print(lst2) #[98, 89, 78, 76, 65, 23, 12, 9, 8, 6, 5, 4, 3, 2, 1]