最近在整理Python基础语法部分的笔记,准备边整理边分享。本篇是关于集合set{ }的笔记。
Python常用的8种经典数据结构:
- Python原生数据结构:
- 元组tumple( )
- 列表list[ ]
- 集合{ }
- 字典{A:B}
Numpy包中的数据结构:
- 数组NDarray(带多种操作)
- 矩阵Matrix(多种线性代数计算)
Pandas包中的数据结构:
- 序列Series(索引+1列数据)
- 数据框DataFrame(索引+多列数据集)
集合set{ }
特点:
- 集合是多个元素的无序组合。
- 集合类型与数学中的集合概念一致,其元素具有确定性、无序性、互异性。
- 集合元素不可更改,不能是可变数据类型
应用:
- 包含关系比较
- 数据去重:集合元素的互异性
1
创建集合
集合的创建。集合用大括号{}表示,元素间逗号分隔。可以使用set()或{}直接创建。使用set()函数创建集合会自动地拆分多个字母组成的字符串。
注意:建立空集合时必须使用set(),因为{}默认创建空字典。
set_0 = set('abcdeffrd1234123') #从字符串创建set_1 = {'大','小','点','多'} #直接创建set_2 = set(('Hello','World')) #从元组创建print('集合',set_0,'\n显示该数据结构类型结构',type(set_0), '\n集合2',set_1,'\n集合3',set_2)
set_0 = set('abcdeffrd1234123') #从字符串创建
set_1 = {'大','小','点','多'} #直接创建
set_2 = set(('Hello','World')) #从元组创建
print('集合',set_0,'\n显示该数据结构类型结构',type(set_0),
'\n集合2',set_1,'\n集合3',set_2)
集合 {'b', '4', '1', 'c', 'e', 'r', 'd', 'a', '3', 'f', '2'} 显示该数据结构类型结构 <class 'set'> 集合2 {'多', '大', '小', '点'} 集合3 {'World', 'Hello'}
集合 {'b', '4', '1', 'c', 'e', 'r', 'd', 'a', '3', 'f', '2'}
显示该数据结构类型结构 <class 'set'>
集合2 {'多', '大', '小', '点'}
集合3 {'World', 'Hello'}
2
集合查询操作
集合的查询。使用in可以判断a是否在集合中,若存在为True,反之为False
print(set_0)print('s' in set_0)print('s' not in set_0)
print(set_0)
print('s' in set_0)
print('s' not in set_0)
{'b', '4', '1', 'c', 'e', 'r', 'd', 'a', '3', 'f', '2'}FalseTrue
{'b', '4', '1', 'c', 'e', 'r', 'd', 'a', '3', 'f', '2'}
False
True
3
集合元素的增加
- add()函数可以在集合对象中加入新元素,但若元素已经存在,则无效果。
- update表示添加(并非修改),是遍历输入的每一个元素、逐一添加,并且按照顺序添加进集合。
print(set_1)set_1.add('C')print('add()后的集合',set_1)set_1.update('zfy') #逐一访问'zfy',添加到集合print('update()后的集合',set_1)#可以看到,添加后的元素顺序是随机的
{'多', '大', '小', '点'}add()后的集合 {'小', '多', '大', 'C', '点'}update()后的集合 {'小', 'z', 'y', '多', '大', 'f', 'C', '点'}
{'多', '大', '小', '点'}
add()后的集合 {'小', '多', '大', 'C', '点'}
update()后的集合 {'小', 'z', 'y', '多', '大', 'f', 'C', '点'}
4
集合元素的删除
- remove()函数可以将集合中的元素删除。如果元素不存在,产生KeyError异常。
- discard()函数可以删除集合中指定元素,且使元素不存在也不报错。
- pop()可以随机删除集合中的一个元素(在交互模式下删除最后一个元素),更新S,若S为空则产生KeyError异常。
- clear()函数可以清空集合。
print(set_0)set_0.remove('d')print('删除指定元素后的集合',set_0)set_0.discard('x')print('删除不存在',set_0) #用remove()删除不存在会报错set_0.pop()print('随机删除元素的集合',set_0)set_0.clear()print('删除所有元素后的集合',set_0)
print(set_0)
set_0.remove('d')
print('删除指定元素后的集合',set_0)
set_0.discard('x')
print('删除不存在',set_0) #用remove()删除不存在会报错
set_0.pop()
print('随机删除元素的集合',set_0)
set_0.clear()
print('删除所有元素后的集合',set_0)
{'d', 'f', '3', '2', '4', 'a', 'e', 'c', '1', 'r', 'b'}删除指定元素后的集合 {'f', '3', '2', '4', 'a', 'e', 'c', '1', 'r', 'b'}删除不存在 {'f', '3', '2', '4', 'a', 'e', 'c', '1', 'r', 'b'}随机删除元素的集合 {'3', '2', '4', 'a', 'e', 'c', '1', 'r', 'b'}删除所有元素后的集合 set()
{'d', 'f', '3', '2', '4', 'a', 'e', 'c', '1', 'r', 'b'}
删除指定元素后的集合 {'f', '3', '2', '4', 'a', 'e', 'c', '1', 'r', 'b'}
删除不存在 {'f', '3', '2', '4', 'a', 'e', 'c', '1', 'r', 'b'}
随机删除元素的集合 {'3', '2', '4', 'a', 'e', 'c', '1', 'r', 'b'}
删除所有元素后的集合 set()
5
集合特殊操作
- len()返回集合长度。
- copy()可以复制集合中的元素并生成一个新的集合
copy_set_1 = set_1.copy()print('\nlen()返回集合的长度',len(copy_set_1), '\ncopy()生成的集合',copy_set_1)
copy_set_1 = set_1.copy()
print('\nlen()返回集合的长度',len(copy_set_1),
'\ncopy()生成的集合',copy_set_1)
len()返回集合的长度 8 copy()生成的集合 {'z', '小', '点', 'C', 'f', '多', 'y', '大'}
len()返回集合的长度 8
copy()生成的集合 {'z', '小', '点', 'C', 'f', '多', 'y', '大'}
6
集合的运算
- '-'表示求差集
- '&'表示求交集
- '|'表示求并集
- '^'表示求并集减去交集
- A'
- A'>'B判断B是否为A的真子集
- A'=='B判断A与B是否相等
- A'<='B判断A是否为B的子集
- A'>='B判断B是否为A的子集
a = set('apple')b = set('banana')c = {1,2,3}d = {1,2,3,4}e = {1,2,3}print('\n求差集',a-b, '\n求交集',a&b, '\n求并集',a|b, '\n求并集减去交集',a^b, '\n判断c是否为d的真子集',c '\n判断c与e是否相等',c==e, '\n判断c是否为e的子集',c<=e)
a = set('apple')
b = set('banana')
c = {1,2,3}
d = {1,2,3,4}
e = {1,2,3}
print('\n求差集',a-b,
'\n求交集',a&b,
'\n求并集',a|b,
'\n求并集减去交集',a^b,
'\n判断c是否为d的真子集',c
'\n判断c与e是否相等',c==e,
'\n判断c是否为e的子集',c<=e)
求差集 {'e', 'l', 'p'} 求交集 {'a'} 求并集 {'e', 'b', 'l', 'a', 'p', 'n'} 求并集减去交集 {'b', 'n', 'e', 'l', 'p'} 判断c是否为d的真子集 True 判断c与e是否相等 True 判断c是否为e的子集 True
求差集 {'e', 'l', 'p'}
求交集 {'a'}
求并集 {'e', 'b', 'l', 'a', 'p', 'n'}
求并集减去交集 {'b', 'n', 'e', 'l', 'p'}
判断c是否为d的真子集 True
判断c与e是否相等 True
判断c是否为e的子集 True
参考资料:[1]董付国.Python程序设计基础(第二版)[M].北京:清华大学出版社,2015:42-59[2]刘经纬,陈佳明.创新创业+新工科教学质量提升研究——零基础学会Python人工智能[M].北京:首都经济贸易大学出版社,2020:25-26[3]嵩天.PYE6.1-集合类型及操作v2.5[Z].2020[4]叶维忠.Python编程从入门到精通[M].北京:人民邮电出版社,2018:100-101