Python 操作集合
集合,set,主要用于数据的关系测试和去重处理,和列表类似,可以存储数据,列表中可以存储重复的数据,但是如果转化为集合之后,数据就会进行去重,然后保留唯一值;关系测试就是求多个集合对象之间的交集、差集、并集、补集等等。用{}表示。
去重处理,定义一个列表,里面有重复的数据,将列表转化为集合,然后查看集合中的数据。
list1=[ 1,3,5,7,9,7,5,3,1]
set1=set(list1)
print(set1,type(set1))
集合,可以完成列表的去重处理,集合是乱序的,无序排列的。
集合关系测试
- 交集:两个集合中的相同的元素。Intersection,&
- 并集:将两个集合中的元素和在一个集合中,进行集合去重处理,union,|。
- 差集:在集合A中存在,在集合B中不存在的元素的集合。Difference。A差B和B差A的结果是完全不一致的。A差B,实际上就是A-A交B。-。
- 子集:判断,返回True或者False,issubset。
- 超集:判断,返回True或者False,issupperset。
- 反向差集:对称差集,用并集-交集,将两个集合中互相没有的元素取出来,放在一个集合中。^。
示例:
中存在,在集合2中不存在,有先后顺序之分
和只在集合2中存在的元素,组成的集合,没有先后顺序
print("-------对称交集--------")
print(set1.symmetric_difference(set2))
print((set2 | set1) - (set1 & set2))
输出结果如下:
集合的运算,增删改查
- 添加:add,向集合中添加一个元素,位置随机。
- 批量添加:update,以列表的形式,向集合中加入多个元素。实际上对象只要是一个可迭代的对象,就可以。
- 删除:remove,删除集合中的元素,集合是去重的,所以只会删除一个。
- 长度:len
- 判断是否是成员:in
- 删除:pop,随机删除,并返回该删除的值。
- 指定性删除:discard,指定一个值,如果该值在集合中,那删除,如果不在,不删。和remove的区别是如果remove一个集合中不存在的元素就会报错,如果是discard,则不会报错。
set1 = { 1,3,5,67,8,9}
#添加元素,add单个添加,update添加一个列表
set1.add(28)
print(set1)
set1.update([2,4,6])
print(set1)
#删除,remove和discard,随机删除并返回删除结果pop
set1.remove(1)
print(set1)
set1.discard(999)
print(set1)
print(set1.pop())