持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情
什么是集合
集合属于Python无序可变序列,使用一对大括号作为定界符,元素之间使用逗号分隔,同一个集合内的每个元素都是唯一,元素之间不允许重复。集合中只能包含数字,字符串,元组等不可变类型(或者说可哈希)的数据,不能包含列表,字典,集合等可变类型的数据。Python提供了一个内置函数hash()来计算对象的哈希值,凡是无法计算哈希值(调用内置函数hash()时抛出异常)的对象都不能作为集合的元素,也不能作为字典对象的“键”。
集合对象的创建与删除
直接将集合赋值给变量即可创建一个集合对象。
>>> a={3,5} #创建集合对象
>>> type(a) #查看对象类型
<class 'set'>
也可以使用set()函数将列表,元组,字符串,range对象等其他可迭代对象转换为集合,如果原来的数据中存在重复元素,则在转换为集合的时候只保留一个;如果原序列或迭代器对象中有不可哈希的值,则无法转换成为集合,抛出异常。
>>> a_set=set(range(8,14)) #把range对象转换为集合
>>> a_set
{8,9,10,11,12,13}
>>> b_set=set([0,1,2,3,0,1,2,3,7,8]) #转换时自动去掉重复元素
>>> b_set
{0,1,2,3,7,8}
>>> x_set #空集合
除了列表推导式,生成器推导式,字典推导式之外,python还支持使用集合推导式来快速生成集合。
>>> {x.strip() for x in ('he','she','I')}
{'I','she','he'}
>>> import random
>>> x={random.randint(1,500) for i in range(100)}
#生成随机数,自动去除重复元素
>>> len(x) #一般而言输出结果会小于100
>>> {str(x) for x in range(10)}
{'3','0','1','8','4','7','5','6','9','2'}
当不再使用某个集合时,可以使用del命令删除整个集合。
增加与删除集合元素
集合对象的 add()方法可以增加新元素,如果该元素已存在则忽略该操作,不会抛出异常;update方法合并另外一个集合中的元素到当前集合中,并自动去除重复元素。
>>> s={1,2,3}
>>> s.add(3) #增加元素,重复元素自动忽略
>>> s.update({3,4}) #更新当前字典,自动忽略重复的元素
>>> s
{1,2,3,4}
集合对象的pop()方法随机删除并返回集合中的一个元素,如果集合为空则抛出异常;remove()方法删除集合中特定值的元素,如果不存在则抛出异常;discard()方法从集合中删除一个特定元素,如果元素不在集合中则忽略该操作;clear()方法清空集合。
>>> s.discard(5) #删除元素,不存在则忽略该操作
>>> s.remove(5) #删除元素,不存在则抛出异常
KeyError:5
>>> s.pop() #删除并返回一个元素
1