一、创建一个集合(set)
初始化一个有三个元素的集合,set1 = {'a','n',9}
初始化无元素的集合 set2 = set(),和初始化一个空list不同,不能使用{},{}初始化的是一个没有元素的字典(dict)
集合的特点是:无重复元素,不支持索引,和数学上定义的集合一样
二、集合的常用操作
set1 = {‘a’, ‘c’, ‘b’}
set2 = {‘n’,’m’,’c’}
操作 | 描述 | 结果 |
---|---|---|
set1 | set2 | 求两个集合的并集 | {‘m’, ‘b’, ‘n’, ‘c’, ‘a’} |
set1 & set2 | 求两个集合的交集 | {‘c’} |
set1 - set2 | 求两个集合的差集 | {‘a’, ‘b’} |
set1 ^ set2 | 求两个集合的对称差集 | {‘n’, ‘b’, ‘a’, ‘m’} |
‘a’ in set1 | 判断一个元素是否在集合中 | True |
‘a’ not in set1 |
三、集合的常用函数
函数 | 说明 | 描述 |
---|---|---|
remove(object) | 从集合中移除一个元素 | 移除的元素不在set中,会抛出KeyError |
pop() | 从集合中随机移除一个元素 | 如果set为空会抛出KeyError |
copy() | 浅拷贝一个set | 返回新的set |
clean() | 移除集合中所有元素 | 返回None |
add(object) | 给集合中添加一个元素 | 若元素已经存在集合中,该操作对集合无任何影响 |
difference(iterable) | 求差集 | 参数为空或者必须是一个或多个可迭代的对象,否则会抛出TypeError |
difference_update(iterable) | 求差集,并且用差集更新原来的集合 | 参数为空或参数为空或者必须是一个可迭代的对象,否则会抛出TypeError |
discard(elelmet) | 移除集合中某个元素 | 如这个元素不存在,则不对集合做任何操作 |
intersection(iterable) | 求交集 | 参数可以为空或者必须是一个可迭代的对象 |
intersection_update(iterable) | 求交集并更新原set | 返回None |
isdisjoint(iterable) | 交集的结果是空集合返回True | |
issubset(iterable) | 判断集合是否是另外一个集合的子集 | |
issuperset(iterable) | 判断一个集合的是否是另外一个集合的父集 | |
symmetric_difference(iterable) | 求两个集合的对称差集 | 返回新set |
symmetric_difference_update(iterable) | 将两个集合堆成差集更新掉原set | 返回None |
union(iterable) | 求并集 | 返回新的set |
update(iterable) | 更新集合 | 返回None |
测试:
if __name__ == '__main__':
print(type({}))
set1 = {'a', 'c', 'b'}
set2 = {'n','m','c'}
print(set1 | set2)
print(set1 & set2)
print(set1 - set2)
print(set2 - set1)
print(set1 ^ set2)
print( 'a' not in set1)
print( 'a' in set1)
set1.remove('a')
print(set1)
print(set1.pop())
print(set1)
print(set1.copy())
set1.clear()
print(set1)
set1.add('l')
print(set1)
set3 = {'d','c','l'}
print(set3.difference(['m','c']))
print(set3)
print(set3.difference_update(['m','c']))
print(set3)
print(set3.discard('d'))
print(set3)
print(set2.intersection(set3))
print(set2.intersection_update(set3))
set4 = {'x','n','o'}
print(set4.isdisjoint('l'))
print(set4)
print(set4.issubset({'x','n','m','o'}))
print(set4.issuperset('o'))
print(set4.symmetric_difference(['f','x']))
print(set4)
print(set4.symmetric_difference_update(['f','x']))
print(set4)
print(set4.union('123'))
print(set4)
print(set4.update('123','SDF'))
print(set4)
测试的结果
<class 'dict'>
{'a', 'n', 'b', 'm', 'c'}
{'c'}
{'a', 'b'}
{'n', 'm'}
{'b', 'a', 'n', 'm'}
False
True
{'c', 'b'}
c
{'b'}
{'b'}
set()
{'l'}
{'d', 'l'}
{'d', 'l', 'c'}
None
{'d', 'l'}
None
{'l'}
set()
None
True
{'x', 'n', 'o'}
True
True
{'f', 'n', 'o'}
{'x', 'n', 'o'}
None
{'f', 'n', 'o'}
{'2', 'o', '1', '3', 'n', 'f'}
{'f', 'n', 'o'}
None
{'D', '2', 'S', 'o', '1', 'F', '3', 'n', 'f'}