第八章、Python数据类型(set集合)
1、集合(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'])

浙公网安备 33010602011771号