python 集合
Python集合
集合(set):把不同的元素组成一起形成集合,是python基本的数据类型。
集合对象是一组无序排列hashable value:集合成员可以做字典的键。
集合就像是 list 和 dict 的组合。
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list或tup作为输入集合:
>>> s = set([1, 2, 3]) >>> s {1, 2, 3}
注意:set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。试试把list放入set,看看是否会报错。
cc = set([1, 2, 3, 4, 5, 5, 5]) c = [1, 2, 3] cc.add(c)
Traceback (most recent call last): File "C:/Users/gck1d6o/Desktop/FTP/day12/set_dict.py", line 16, in <module> cc.add(c) TypeError: unhashable type: 'list'
集合两大功能:
1、去重
集合跟字典key一样天生去重,并且无序
2、关系测试
^ 对称差集
集合的方法
集合是唯一项的无序集,集合不提供索引或切片操作,集合的长度可变,但放入里面的必须是不可变的。集合分为两种:可变集合(set)和不可变集合(frozenset)。
s = set([1, 2, 3])
fs = frozenset([1, 2, 3])
集合通用方法和操作
方法和操作 | 描述 |
---|---|
len(s) | 返回集合s的项目数 |
s.copy() | 返回集合s的一份副本 |
s.difference(t) | 求差集,返回在s中,但不在t中的项目 |
s.intersection(t) | 求交集,返回同时在s和t中的项目 |
s.isdisjoint(t) | s和t中没有相同项,返回True |
s.issubset(t) | s是t的子集,返回True |
s.issuperset(t) | s是t的超集,返回True |
s.union(t) | 求并集,返回在s或t中的项目 |
可变集合set的方法和操作
方法和操作 | 描述 |
---|---|
s.add(item) | 添加item |
s.clear() | 清空集合s |
s.difference_update(t) | 在s中删除同时在s和t中的项目 |
s.discard(item) | 删除item |
s.pop() | 弹出任一项 |
s.remove(item) | 删除item,没有则引发异常 |
s.update(t) | 将t中所有项添加到t中,t为任意支持迭代对象 |
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 中不重复的元素