最近在整理Python基础语法部分的笔记,准备边整理边分享。本篇是关于集合set{ }的笔记。

Python常用的8种经典数据结构:

  1. Python原生数据结构:
  • 元组tumple( ) 
  • 列表list[ ]
  • 集合{ }
  • 字典{A:B}

Numpy包中的数据结构:


  • 数组NDarray(带多种操作)
  • 矩阵Matrix(多种线性代数计算)

Pandas包中的数据结构:


  • 序列Series(索引+1列数据)
  • 数据框DataFrame(索引+多列数据集)

python 数组转map Python 数组转set_Python

集合set{ }

特点:
  1. 集合是多个元素的无序组合。
  2. 集合类型与数学中的集合概念一致,其元素具有确定性、无序性、互异性。
  3. 集合元素不可更改,不能是可变数据类型
应用:
  1. 包含关系比较
  2. 数据去重:集合元素的互异性

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


python 数组转map Python 数组转set_Python

 参考资料:[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