Python学习杂记_9_集合操作

时间:2022-12-13 00:10:24
集合
集合是由花括号括起来的一组数据,特点是“数据不重复”,“无序”,“类型不统一”。
其中数据不重复是它最重要的特点,常常用于“去重”操作,Set(list)方法可以把列表强制转换成集合。

集合的一些操作:

1. 把列表转换为集合 # 强制类型转换
list = [‘abc’ , 58.5, True]
print(set(list))

2. 取交集 # 两个集合共有的部分
list1 = {1,2,3,4,5,6,9,10}
list2 = {2,3,4,5,6,1}
list3 = {1,2,3}
print(list1.intersection(list2))
print(list1 & list2)

3. 取并集 # 把集合合起来之后去重
print(list1.union(list2))
print(list1 | list2)

4. 取差集 # 两个集合做差,返回被减数去掉减数后的那部分数据
print(list1.difference(list2))
print(list1 - list2) # 取list1有且list2没有的那部分


5. 取对称差集 # 输出两个列表中都没有的值,也就是把两个集合中相同的去掉
print(list1.symmetric_difference(list2))
print(list1 ^ list2)

6.几个判断操作
print(list3.issubset(list1)) # 判断list3是不是list1的子集
print(list1.issuperset(list3)) # 判断list1是不是list3的父集
print(list1.isdisjoint(list3)) # 判断list1和list3是否有交集

7. 其他操作
list1.add(888) # 添加元素,不返回值,原集合list1被改变,简单添加单个数值或字符串
list1.update([777,666,666]) # 添加一个或多个元素,以列表形式添加,列表里不能有布尔值
list1.remove(777) # 删除元素,如果元素不存在会报错
list1.pop() # 删除一个随机的元素,并返回删除的元素
list1.discard('dddd') # 如果删除的元素存在,删除,不存在不做处理

引用一组对集合操作的总结: http://www.jb51.net/article/57214.htm
经典片段:

去重:
>>> lst = [1,2,3,4,1]
>>> print list(set(lst))
[1, 2, 3, 4]

基本操作:
t.add('x')            # 添加一项
s.update([10,37,42])     # 在s中添加多项
t.remove('H')          # 删除一项
len(s)             # set 的长度
x in s              # 测试 x 是否是 s 的成员
x not in s          # 测试 x 是否不是 s 的成员
s.issubset(t)
s <= t              # 测试是否 s 中的每一个元素都在 t 中
s.issuperset(t)
s >= t             # 测试是否 t 中的每一个元素都在 s 中
s.union(t)
s | t              # 返回一个新的 set 包含 s 和 t 中的每一个元素
s.intersection(t)
s & t              # 返回一个新的 set 包含 s 和 t 中的公共元素
s.difference(t)
s - t              # 返回一个新的 set 包含 s 中有但是 t 中没有的元素
s.symmetric_difference(t)
s ^ t              # 返回一个新的 set 包含 s 和 t 中不重复的元素
s.copy()            # 返回 set “s”的一个浅复制