Python基础:集合

目录

一、集合的创建

(1)集合的创建

(2)集合生成式

二、集合的相关操作

(1)集合元素的判断

(2)集合元素的增加

(3)集合元素的删除

三、集合间的关系

四、集合的数据操作


什么是集合?
集合

  • Python语言提供的内置数据结构
  • 与列表、字典一样都属于可变类型的序列
  • 集合是没有value的字典

一、集合的创建

(1)集合的创建

  • 用{ }进行创建
  • 用内置函数set()进行创建

注意:在集合中,空集合的创建不能够直接使用{}进行创建,这样创建出来的空集合不是集合类型,而是字典类型。故空集合的创建是使用set()内置函数进行创建。

示例:

# 第一种创建方式
s = {1, 2, 3, 3, 4, 5, 6, 7}
print(s, type(s))
# 第二种创建方式
s1 = set(range(6))  # 根据范围进行集合的创建
print(s1)
s2 = set([1, 23, 34, 12, 23])  # 将列表转换为为集合
print(s2, type(s2))
s3 = set((3, 23, 345, 32))  # 将元组转换为集合
print(s3, type(s3))
s4 = set('Python')  # 将字符串转换为集合
print(s4, type(s4))
s5 = set({1, 23, 24, 25, 21})
print(s5, type(s5))  # 集合的创建
# 空集合的创建
s6 = {}
print(s6, type(s6))  # 直接使用{}进行创建,其类型为字典
s7 = set({})
print(s7, type(s7))  # 空集合

运行结果:

(2)集合生成式

集合生成式即生成集合的表达式

示例:

lst = [i for i in range(8)]  # 列表生成式
print(lst)
s = {i for i in range(8)}  # 集合生成式
print(s)

运行结果:

 

二、集合的相关操作

(1)集合元素的判断

利用in或not in判断元素是否存在于集合中

示例:

s = {12, 13, 23, 25, 30}
print('------------集合元素的判断------------')
print(23 in s)
print(35 in s)
print(23 not in s)
print(35 not in s)

运行结果:

 

(2)集合元素的增加

  • 调用add( )方法,一次去添加一个元素
  • 调用update( )方法至少添加一个元素
  • 使用update( )增加元素时除了可以添加集合外,还可以添加列表、元组

(3)集合元素的删除

  • 调用remove()方法,一次删除一个指定元素,如果指定元素不存在抛出KeyError
  • 调用discard()方法,一次删除一个指定元素,如果指定元素不存在不抛出异常
  • 调用pop()方法,一次只删除一个任意元素(pop()中是没有参数的,如果添加参数则会抛出异常)
  • 调用clear()方法,清空集合

示例:

s = {12, 13, 23, 25, 30}
print('-------------集合元素的增加操作-----------')
# 添加单个元素
s.add(45)
print(s)
# 添加多个元素
s.update({100, 200, 300})  # 添加集合中的元素
print(s)
s.update([120, 150, 180])  # 添加列表中的元素
print(s)
s.update((210, 240, 270))  # 添加元组中的元素
print(s)
print('--------------集合中的删除操作-----------')
s.remove(100)  # 删除单个元素(指定元素)
print(s)
"""s.remove(289)
print(s)"""     # 当删除集合中的元素不存在时,运行结果会抛出异常
s.discard(210)  # 删除单个元素(指定元素)
print(s)
s.discard(289)  # 当删除集合中的元素不存在时,不会抛出异常
print(s)
s.pop()  # 删除集合中任意一个元素,pop()不能含有参数,否则运行结果会抛出异常
print(s)
s.clear()   # 清空集合
print(s)

运行结果:

 

三、集合间的关系

两个集合是否相等

  • 可以使用运算符==!=进行判断

一个集合是否是另一个集合的子集

  • B是A的子集
  • 可以调用方法issubset进行判断

一个集合是否是另一个集合的超集

  • A是B的超集
  • 可以调用方法issuperset进行判断

两个集合是否没有交集

  • 可以调用方法isdisjoint进行判断(若有交集则为False,没有交集则为True)

示例:

print('----------判断集合是否相等----------')
s = {10, 20, 30, 40, 50, 60, 70}
s1 = {20, 30, 10, 50, 70, 40, 60}
print(s == s1)
print(s != s1)

'''判断一个集合是否是另一个集合的子集,是子集结果为True,不是子集结果为False'''
s2 = {10, 20, 30, 40, 50, 60}
s3 = {20, 30, 40, 60}
s4 = {10, 20, 30, 70}
print(s3.issubset(s2))
print(s4.issubset(s2))

'''判断一个集合是否是另一个集合的超集,是超集结果为True,不是结果为False'''
print(s2.issuperset(s3))
print(s2.issuperset(s4))

'''判断两个集合是否有交集,如果存在交集,则结果为False,否则为True'''
s5 = {100, 200, 300}
print(s2.isdisjoint(s3))
print(s2.isdisjoint(s4))
print(s3.isdisjoint(s4))
print(s2.isdisjoint(s5))

运行结果:

 

四、集合的数据操作

集合中的数学操作类似于数学中的集合的相关知识

交集、并集、差集、对称差集

交集:intersection或者&去进行表达

并集:union或者|去进行表达

差集:difference或者-去进行表达

对称差集:symmetric_difference或者^去进行表达

示例:

s = {10, 20, 30, 40}
s1 = {20, 30, 50, 60}
print('--------交集--------')
print(s.intersection(s1))
print(s & s1)
print('---------并集-------')
print(s.union(s1))
print(s | s1)
print('---------差集-------')
print(s.difference(s1))
print(s - s1)
print('---------对称差集---------')
print(s.symmetric_difference(s1))
print(s ^ s1)

运行结果:

 

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值