Python基本数据结构---set
2018-04-21 09:40 fkk 阅读(295) 评论(0) 编辑 收藏 举报set 无序集合、key不重复
无索引、无切片、作为一个无序的集合,set不记录元素位置或者插入点。因此,set不支持 indexing, slicing, 或其它类序列(sequence-like)的操作
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list作为输入集合:
s = set([1, 2, 3]):set([1,2,3])
s = set('boy') : set(['b','o','y'])
s = set(('cmd','pid')) :set(['cmd','pid'])
s = {'txt', 'png', 'jpg', 'xls', 'csv', 'zip', 'xlsx', 'gif', 'GIF'}
空的的集合: set1 = set();
函数:pop()、add()、remove()、update()、len()、clear()、discard()
添加:add(key)、update();区别 s.add('boy'):set(['boy',1,2,3]);s.update('boy'):set(['boy','b',1,2,3,'o','y']);s.update([23,22,32])添加多项
删除:remove(key)删除指定位置的元素,如果不存在,引发KeyError;pop()删除并且返回集合“s”中的一个不确定的元素, 如果为空则引发 KeyError;clear()删除所有元素;s.discard(x),如果在 set “s”中存在元素 x, 则删除
交集:set1 & set2 (set1.intersection(set2))两个set的共有元素
并集: set1 | set2 (set1.union(set2))两个set的元素相加后去重
差集:set1 - set2 (set1.difference(set2)) 集合set1去除和和集合set2相同的部分
对称差集:set1^set2 (set1.symmetric_difference(set2))项在set1或set2中,但不会同时出现在二者中
操作:key in set1; key not in set1 ;for key in set1;
set1.issubset(set2)等价于set1<=set2 : 测试set1中的每一个元素是否都在set2中
set1.issuperset(set2)等价于set1>=set2 : 测试set2中的每一个元素是否都在set1中
s.copy() 返回 set “s”的一个浅复制
set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。试试把list放入set,看看是否会报错
重复元素在set中自动被过滤
应用示例:怎么去除海量列表里重复元素:
a = [11,22,33,44,11,22]
a = list(set(a)) : [33, 11, 44, 22]