基本定义
定义: 集合(set),一种 无序 且不重复的元素序列,使用大括号{}或者set()生成;
s={1,2,3} #集合
s1={} #空字典
s2=set() #空集合
因为集合和字典都是使用大括号来表示的,在创建空集合的时候如果使用s={},生成的对象类型是字典,所以在创建新的空集合对象时,使用set();
添加元素
方法: s.add(),s.update();
>>> s={'a','b'}
>>> s
{'a','b'}
>>> s.add("apple") #add添加元素,直接把整体添加进去
>>> s
{'a','b','apple'}
>>> s.update("apple") #update添加元素,把插入值作为可迭代对象进行遍历,依次添加到集合中
>>> s
{'a','p','e','l','b','apple'}
>>>
add()方法添加的元素可以是任意数据类型,把添加元素作为一个整体添加到集合当中;
update()方法添加的元素必须是可迭代的对象,遍历可迭代的对象,然后把对象中的每一个元素添加到集合中;
集合中嵌套的对象必须是可hash的(),如元组、字符串等;
update()方法在添加列表、集合、字典对象时(不可hash),添加的对象只能有一层(如:[1,2,3]),如果有存在多层嵌套(如:[1,2,3,[1,2,3]]),会发生 “TypeError: unhashable type: ‘list’”;
update
update()方法添加字典对象时,是把字典对象的key部分插入集合中;
移除元素
方法: s.pop(),s.remove(),s.discard(),s.clear();
>>> s={"apple","banana","orange","pear"}
>>> s
{'apple','banana','orange','pear'}
>>> s.pop() #随机删除集合元素,空集合显示“KeyError”
'orange'
>>> s
{'banana','pear','apple'}
>>> s.remove('apple') #删除指定集合元素,如果元素不存在,显示“KeyError”
>>> s
{'banana','pear'}
>>> s.discard('pear') #删除指定集合元素,如果元素不存在,不进行操作
>>> s
{'banana'}
>>> s.clear() #清空集合
>>> s
set() #空集
pop()随机删除集合元素,当集合为空时pop()报错;
remove()删除指定集合元素,元素不存在时报错;
discard()删除指定集合元素,元素不存在时不进行操作;
成员判断
格式: x in s;
>>> s={'a','b','v'}
>>> 'a' in s
True
>>> 'n' not in s
True
其他内置函数
方法 | 描述 |
---|---|
copy() | 浅复制 |
difference(s) | 返回在原集合中但不在集合s中的元素(差集) |
difference_update(s) | s.difference_update(s1)类似于s=s.difference(s1) |
intersection(s) | 返回两个集合的交集 |
intersection_update(s) | s.intersection(s1)类似于s=s.intersection(s1) |
isdisjoint(s) | 如果两个集合没有交集,返回True,否则返回False |
issubset(s) | 如果原集合是s的子集,返回True,否则返回False |
issuperset(s) | 如果原集合是s的父集,返回True,否则返回False |
union(s) | 返回两个几个的交集 |
symmetric_difference(s) | 返回两个集合的不重复的元素集合 |
symmetric_difference_update() | 移除当前集合中和另一个集合的共同元素,并且将另一个指定集合的不同元素插入到当前集合 |
其他操作符
交集&,并集|,对称差集^;
>>> s1={1,2,3,4,5}
>>> s2={3,4,5,6,7}
>>> s1&s2 ## 交集 s1.intersection(s2)
{3,4,5}
>>> s1|s2 ## 并集 s1.union(s2)
{1,2,3,4,5,6,7}
>> s1^s2 ## 对称差集 s1.symmetric_update(s2)