9、集合(set)
集合创建用花括号 { } 或者 set() 函数。
注意:
创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
集合中的元素无序,不可重复。
不推荐使用花括号{}创建集合,因为Python难以分辨是字典还是集合
set()函数可以创建一个无序不重复的元素集,这个函数至多可以传一个参数,否则会报错;可以传比如串一个字符串或者一个列表,只含有一个参数
>>> a=set("A",12) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: set expected at most 1 arguments, got 2 #实例中传了2个参数,所以会报错 >>> a=set("Asdad")
>>> a=set(["["a","b"]","q","w","e"])
File "<stdin>", line 1
a=set(["["a","b"]","q","w","e"])
^
SyntaxError: invalid syntax
>>> a=set(['["a","b"]',"q","w","e"]) #单引号和双引号配合使用,不能单引号嵌套单引号,或者双引号嵌套双引号
1)list()和set()
能够实现两种数据类型之间的转化。
2)基本操作
set.add(元素) 向set集合中添加元素
set1.update(set2) 将集合set2更新到集合set1中
>>> a.add("q") >>> a set(['A', 1, 2, 'q']) >>> b=set() >>> b.update(a) >>> b set(['A', 1, 2, 'q']) >>> c.update(a) Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'dictionary-itemiterator' object has no attribute 'update' # 注得先创建集合才能使用update,否则会报错,字典也是一样,得先创建出存在的字典
set.pop()函数,任意选一个元素删除并将这个值返回。pop()不能有参数,否则报错。此外,如果set是空的了,也报错。
set.remove(obj)函数,删除指定元素obj
,该元素必须是set中的元素,否则就报错。
set.discard(obj)函数,删除指定元素obj,obj如果是set中的元素,就删除,如果不是,就什么也不做。
set.clear()函数,清空集合中的所有元素,得到空集合。
3) set()创立的集合都是可原处修改的集合,即里面的元素可变;frozenset()创立的集合不能在原处修改,里面的元素不可变。
>>> a=frozenset() >>> type(a) <type 'frozenset'>
4)判断集合A与集合B的关系
>>> a=set(['q', 'w', 'e', 'r']) >>> b=set(['q', 'w']) >>> b<a #c是a的子集 True >>>b.issubset(a) #或者用这种方法,判断c是否是a的子集 True >>> a.issuperset(c) #判断a是否是c的超集 True >>> a | b #并集,可以有两种方式,结果一样 set(['q', 'w', 'e', 'r']) >>> a.union(b) set(['q', 'w', 'e', 'r']) >>> a & b #交集,两种方式,等价 set(['q', 'w']) >>> a.intersection(b) set(['q', 'w']) >>> a - b #A相对B的差(补) set('e', 'r']) >>> a.difference(b) set(['e', 'r']) >>> c=set(['q', 'w','s']) #A、B的对称差集 >>> a.symmetric_difference(c) set(['s', 'r', 'e'])