set集合
set集合
set集合是一个无序不重复元素的集,基本功能包括关系测试和消除重复元素。集合使用大括号({})框定元素,并以逗号进行分隔。但是注意:如果要创建一个空集合,必须用 set() 而不是{},因为后者创建的是一个空字典。
集合数据类型的核心在于自动去重。
s = set([1,1,2,3,3,4])
s
{1,2,3,4} #自动去重
-------------------------------------
>>> set("this is test") #对于字符串,集合会把它一个一个拆开,然后去重,空格是空格去重
{'t',' ','s','h','e','i'}
通过*add(key)*方法可以添加元素到set中,可以重复添加,但不会有效果:
s ={1,2,3,4}
s.add(5)
s
{1,2,3,4,5}
s.add(5)
{1,2,3,4,5}
可以通过update()方法,将另一个对象更新到已有的集合中,这一过程同样会进行去重。
>>> s
{1,2,3,4,5}
>>> s.update("python")
>>> s
{1,2,3,4,5, 'p','y','t','h','o','n'}
通过remove(key)方法删除指定元素,或者使用pop()方法。注意,集合的pop方法无法设置参数,删除指定的元素:
s
{1,2,3,4,5, 'p','y','t', 'h','o','n'}
s.remove("n")
{1,2,3,4,5, 'p','y','t','h','o'}
s.pop() #弹出第一个元素
1
s.pop(3)
Traceback (most recent call last):
File "<pyshell#22>",line 1,in <module>
s.pop(3)
TypeError:pop() takes no arguments(1 given)
需要注意的是,集合不能取出某个元素,因为集合既不支持下标索引也不支持字典那样的通过键值对获取。
除了add、clear、copy、pop、remove、update等集合常规操作,剩下的全是数学意义上的集合操作,交并差等等
对集合进行交并差等,既可以使用union一类的英文方法名,也可以更方便的使用减号表示差集,“&”表示交集,“|”表示并集。
x = set('runoob')
y = set('google')
x,y
(set(['b','r','u','o','n']),set(['e','o','g','l'])) #重复的被删除
x&y #交集
set(['o'])
x | y #并集
set(['b','e','g','l','o','n','r','u'])
x - y #差集
set(['r','b','u','n'])
集合数据类型属于Python内置的数据类型,但不被重视,在很多书籍中甚至都看不到一点介绍。其实,集合是一种非常有用的数据结构,它的去重和集合运算是其它内置类型都不具备的功能,在很多场合有着非常重要的作用,比如网络爬虫。