set像list一样,有一系列元素,但是set的元素没有重复,而且是无序的,这和dict的key很像。
set的特点
set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快。
set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。
set存储的元素也是没有顺序的。
1 | weekdays = set(['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN']) |
set的处理方法
创建set
可以直接通过{}创建set,亦可以调用set()函数(可以理解为强制类型转换)创建。
1 | set1 = {'123','1','2'} |
访问set
访问set中的某个元素实际上就是判断一个元素是否在set中。由于set也是一个集合,所以,遍历set和遍历list类似,都可以通过for循环实现。
1 | s = set(['Adam', 'Lisa', 'Bart', 'Paul']) |
更新set
由于set存储的是一组不重复的无序元素,因此,更新set操作主要是添加新元素到set中和删除set已有元素两种。
添加元素时,用set的add()方法。如果添加的元素已经存在,add()不会报错,但是不再添加:
1 | s = set([1, 2, 3]) |
删除元素时,用set的remove()方法。如果删除的元素不存在set中,remove()会报错:
1 | s = set([1, 2, 3, 4]) |
所以用add()可以直接添加,而使用remove()前需要判断。
set操作符
另有<=,<,>=,>两组关系操作符判断集合的包含关系。
1 | A = {'p', 'y', '123'} |
set应用
1.关系比较(判断包含关系)
2.数据去重
1 | l = [1, 2, 3, 4, 3, 4, 2, 5] |