本节我们将学习python的另一种数据类型:集合(set)
1.集合(set)
集合在Python中是一种没有重复元素,且无序的数据类型,且不能通过索引来引用集合中的元素
>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> set(basket)
set(['orange', 'pear', 'apple', 'banana'])
set1-set2来获得在set1中的元素在set2中不存在的元素,返回一个新的集合。该功能和set1.difference(set2)的效果一样
>>> f=set([1,2,3,4,5])
>>> c=set([3,4,5,6])
>>> f.difference(c)
set([1, 2])
>>> list(f)
[1, 2, 3, 4, 5]
>>> f-c
set([1, 2])
set1|set2 获得在set1或set2中的元素,返回一个新的集合
>>> f=set([1,2,3,4,5])
>>> c=set([3,4,5,6])
>>> f|c
set([1, 2, 3, 4, 5, 6])
set1&set2 获得在set1和set2中均存在的元素,返回一个新的集合
>>> f=set([1,2,3,4,5])
>>> c=set([3,4,5,6])
>>> f&c
set([3, 4, 5])
set1^set2 获得在set1或set2中存在,但不包括在set1和set2中都存在的元素,返回一个新的集合
>>> f=set([1,2,3,4,5])
>>> c=set([3,4,5,6])
>>> f^c
set([1, 2, 6])
2.集合的函数
set.add(x) 新增一个元素x,如果集合中已经存在x,则不会新增到集合中
>>> f=set([3,4,5,6]) >>> f.add('a') >>> f set(['a', 3, 4, 5, 6]) >>> f.add('a') >>> f set(['a', 3, 4, 5, 6])
set.clear()清空集合
>>> f=set([3,4,5,6]) >>> f.clear() >>> f set([])
set.copy()复制一个集合
>>> f=set([3,4,5,6]) >>> s=f.copy() >>> s set([3, 4, 5, 6])
set1.difference(set2) 获得在set1中的元素在set2中不存在的元素,返回一个新的集合.与set1-set2相同
>>> f=set([3,4,5,6]) >>> s=set([1,2,3,4,5]) >>> s.difference(f) set([1, 2])
set1.difference_update(set2) 更新set1,使set1=set1-set2
>>> s=set([1,2,3,4,5]) >>> s.difference_update(f) >>> s set([1, 2])
set.discard(x) 删除集合中值为x的元素
>>> s=set([1,2,3,4,5]) >>> s.discard(3) >>> s set([1, 2, 4, 5])
set1.intersection(set2) 返回set1和set2中均存在的元素,与set1&set2的效果相同
>>> f=set([3,4,5,6]) >>> s=set([1,2,3,4,5]) >>> f.intersection(s) set([3, 4, 5])
set1.intersection_update(set2) 更新set1,使set1等于set1^set2
>>> f=set([3,4,5,6]) >>> s=set([1,2,3,4,5]) >>> f.intersection_update(s) >>> f set([3, 4, 5])
set1.isdisjoint(set2) 判断set1与set2是否有相同的元素,如果有,返回false,没有返回true
>>> f=set([3,4,5,6]) >>> s=set([1,2,3,4,5]) >>> q=set([1,0]) >>> f.isdisjoint(s) False >>> f.isdisjoint(q) True
set1.issubset(set2)判断set1是否是set2的子集,如果是,返回true,否则返回false
>>> f=set([1,2]) >>> q=set([3,4,5,6,7]) >>> s=set([1,2,3,4,5]) >>> f.issubset(q) False >>> f.issubset(s) True
set1.issuperset(set2)判断set1是否包含了set2,即set2是否是set1的子集,如果是,返回true,否则返回false
>>> f=set([1,2]) >>> s=set([1,2,3,4,5]) >>> f.issuperset(s) False >>> s.issuperset(f) True
set.pop() 删除集合中排序最小的元素,并返回该数
>>> s=set([3,4,2,1,3]) >>> s.pop() 1
set.remove(x)删除集合中值为x的元素,如果x不存在,则会引发一个错误
>>> s=set([3,4,2,1,3]) >>> s.remove(3) >>> s set([1, 2, 4]) >>> s.remove(10) Traceback (most recent call last): File "<pyshell#347>", line 1, in <module> s.remove(10) KeyError: 10
set1.symmetric_difference(set2),取set1和set2中不同时存在的元素,组成一个新的集合,并返回,同set1^set2相同
>>> s=set([1,2,4]) >>> f=set([2,4,5,6]) >>> f.symmetric_difference(s) set([1, 5, 6])
set1.symmetric_difference_update(set2),更新set1,使set1=set1^set2
>>> s=set([1,2,4]) >>> f=set([2,4,5,6]) >>> f.symmetric_difference_update(s) >>> f set([1, 5, 6])
set1.union(set2) 取set1与set2的元素,组成一个新的集合,并返回,同:set1|set2
>>> s=set([1,2,4]) >>> f=set([2,4,5,6]) >>> s.union(f) set([1, 2, 4, 5, 6])
set1.update(set2) 更新set1,使set1=set1|set2
>>> s=set([1,2,4]) >>> f=set([2,4,5,6]) >>> s.update(f) >>> s set([1, 2, 4, 5, 6])