7.数据类型-集合

1.集合

  • 集合:set
  • 集合符号:{数据1,数据2…}
  • 集合属于可变类型
  • 集合数据是无序的(无序性)
  • 集合每一个元素是唯一的(唯一性)

2.集合踩坑

空集合问题

set1 = {}
print(type(set1))  # <class 'dict'>

# 原因:集合(set)与字典(dict)符号一样,但内部数据结构不同,当为{}时,它是被识别为字典
# 因此 空集合 的创建是用 set()

set2 = set()
print(type(set2))  # <class 'set'>

3.集合特点

无序性

set1 = {'hah', 1, '快'}
print(set1)
# 多执行几次,发现数据出来顺序是乱的
# {1, 'hah', '快'}
# {'hah', 1, '快'}

唯一性

set2 = {'hah', 1, '快', 1, 1, 1}
print(set2)  # {1, '快', 'hah'}

4.集合(交,并,补)

在这里插入图片描述

set_a = {1, 2, 'a'}
set_b = {1, 3, 'b'}

# 交集  &
set_jiao = set_a & set_b
print(set_jiao)  # {1}

# 并集  |
set_bing = set_a | set_b
print(set_bing)  # {'b', 1, 2, 3, 'a'}

# 补集  -
set_bu_b = set_a - set_b  # set_b的补集
print(set_bu_b)  # {'a', 2}
set_bu_a = set_b - set_a  # set_a的补集
print(set_bu_a)  # {'b', 3}

5.集合操作方法

  • add: 是把要传入的元素做为一个整个添加到集合中
set3 = {1, 'ahah', '数据'}
set3.add('shu')
print(set3) # {'ahah', 1, 'shu', '数据'}

  • pop: 删除并且返回 set “集合”中的一个不确定的元素, 如果集合为空则引发 KeyError
# 随机删
set4 = {1, 'ahah', '数据'}
set4.pop()
print(set4)  # {'ahah', '数据'}
  • remove:从 set “集合”中删除指定元素 , 如果不存在则引发 KeyError
set5 = {1, 'ahah', '数据'}
set5.remove('ahah')
print(set5)  # {1, '数据'}

set7 = {1, 'ahah', '数据'}
set7.remove('kuail')  # KeyError: 'kuail'
  • discard: 如果在 set “集合”中存在元素 x, 则删除 ,不存在不报错
set5 = {1, 'ahah', '数据'}
set5.discard('ahah')
print(set5)  # {1, '数据'}

set7 = {1, 'ahah', '数据'}
set7.discard('kuail')
print(set7)  # {1, 'ahah', '数据'}
  • clear: 清空集合里面的所有元素
set8 = {1, 'ahah', '数据'}
set8.clear()
print(set8)  # set()   --空集合

(增)

  • update:可以在集合里面添加多项
set9 = {1, 'ahah', '数据'}
set9.update([1, '2', 3, '4'])
print(set9)  # {1, 3, '4', 'ahah', '2', '数据'}

set10 = {1, 'ahah', '数据'}
set10.update('你快乐吗?')
print(set10)  # {1, '吗', '数据', 'ahah', '你', '乐', '?', '快'}

  • isdisjoint: 是否无交集(无交集:True 有交集:False)
set11 = {1, 2, 'a'}
set12 = {1, 3, 'b'}

print(set11.isdisjoint(set12))  # False
  • issubset: 判断指定集合是否为该方法参数集合的子集。 是True, 不是False
# a.issubset(b) :  集合a是否为集合b的子集   判断集合b 是否包含 集合a

set13 = {1, 2, 'a'}
set14 = {1, 3, 'b'}
set15 = {1}
print(set13.issubset(set14))  # False
print(set15.issubset(set14))  # True
  • issuperset : 判断该方法的参数集合是否为指定集合的子集
# a.issuperset(b) :  集合b是否为集合a的子集   判断集合a 是否包含 集合b

set13 = {1, 2, 'a'}
set14 = {1, 3, 'b'}
set15 = {1}
print(set13.issuperset(set14))  # False
print(set15.issuperset(set14))  # False
print(set14.issuperset(set15))  # True
  • intersection: 返回集合的交集
set16 = {1, 2, 'a'}
set17 = {1, 3, 'b'}

print(set16.intersection(set17))  # {1}
  • intersection_update: 移除 指定集合 中不存在于 方法中的接收集合 中的元素
set16 = {1, 2, 'a'}
set17 = {1, 3, 'b'}
# 移除 set16 中不存在于 set17 中的元素
set16.intersection_update(set17)
print(set16)  # {1}
print(set17)  # {1, 3, 'b'}
  • symmetric_difference: 返回两个集合中不重复的元素集合。
set18 = {1, 2, 'a'}
set19 = {1, 3, 'b'}

print(set18.symmetric_difference(set19))  # {2, 3, 'b', 'a'}
  • symmetric_difference_update: 移除当前集合(指定集合)中在方法接收集合相同的元素,并将方法接收集合中不同的元素插入到当前集合(指定集合)中。
set18 = {1, 2, 'a'}
set19 = {1, 3, 'b'}

set18.symmetric_difference_update(set19)
print(set18)  # {2, 3, 'a', 'b'}
print(set19)  # {'b', 1, 3}
  • union: 返回两个集合的并集两个集合的并集
set20 = {1, 2, 'a'}
set21 = {1, 3, 'b'}

print(set20.union(set21))  # {'a', 1, 2, 3, 'b'}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值