python 常用数据结构-集合

本文详细介绍了Python中的集合数据结构,包括集合的定义、使用方法(如创建、成员检测、add、update、remove、discard、pop和clear等)、集合运算(交集、并集和差集)以及集合推导式的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python 常用数据结构-集合

Set 集合

  • 集合定义与使用
  • 集合常用方法
  • 集合推导式

集合定义

  • 无序的唯一对象集合
  • 大括号{}包围,对象相互之间使用逗号分隔
  • 集合是动态的,可以随时添加或删除元素
  • 集合是异构的,可以包含不同类型的数据

集合使用:创建

  • 创建通过使用{}填充元素
  • 通过构造方法 set()
  • 通过集合推导式

“”“创建集合”“”
#1、使用大括号{}填充元素
set1 = {1, 2, 3}
print(type(set1),set1)

#2、使用构造方法创建集合
set2 = set(‘hogwarts’)
print(type(set2),set2)
set3 = set([1,2,3])
print(type(set3),set3)
set4 = set() # 空集合
print(type(set4),set4)

#3、通过集合推导式
set5 = {i for i in range(5) if i%2 == 0}
print(type(set5),set5)

#注意:不要单独使用{ }来创建空集合
#st7 = {} # 这是字典类型
#print(type(st7))

输出结果为:
<class ‘set’> {1, 2, 3}
<class ‘set’> {‘r’, ‘s’, ‘a’, ‘g’, ‘h’, ‘w’, ‘t’, ‘o’}
<class ‘set’> {1, 2, 3}
<class ‘set’> set()
<class ‘set’> {0, 2, 4}

集合使用:成员检测

  • in
  • 判断元素是否在集合中存在
  • not in
  • 判断元素是否在集合中不存在

“”“集合使用:成员检测”“”
set6 = {1, 4, 6}
#in
print(1 in set6) # 打印 TRUE

#not in
print(100 not in set6) # 打印 TRUE

集合方法

  • add()
  • update()
  • remove()
  • discard()
  • pop()
  • clear()

集合方法 add()

  • add(item)
  • 入参:对象 item
  • 返回:None
    #添加元素
    set7 = set()
    set7.add(1)
    set7.add(2)
    set7.add(‘hogwarts’)
    print(type(set7),set7)
    输出结果:
    <class ‘set’> {1, 2, ‘hogwarts’}

集合方法 update()

  • update(iterable)
    批量添加来自可迭代对象中的所有元素
  • 入参:可迭代对象 iterable
  • 返回:None

“”“集合方法 update()”“”
set7 = set()
set7.update(‘hogwarts’,‘hello’)
print(type(set7),set7)
set7.update([1, 2, 3]) # 1、批量添加列表中的元素
print(type(set7),set7)
set7.update((4,5,6,7)) # 2、批量添加元组中的元素
print(type(set7),set7)
set7.update({‘a’, ‘b’, ‘c’}) # 3、批量添加集合中的元素
print(type(set7),set7)
输出结果为:
<class ‘set’> {‘r’, ‘s’, ‘h’, ‘g’, ‘w’, ‘t’, ‘l’, ‘o’, ‘a’, ‘e’}
<class ‘set’> {‘r’, ‘s’, ‘h’, 1, 2, 3, ‘g’, ‘w’, ‘t’, ‘l’, ‘o’, ‘a’, ‘e’}
<class ‘set’> {‘r’, ‘s’, ‘h’, 1, 2, 3, 4, 5, ‘g’, ‘w’, 6, 7, ‘t’, ‘l’, ‘o’, ‘a’, ‘e’}
<class ‘set’> {1, 2, 3, 4, 5, 6, 7, ‘w’, ‘o’, ‘c’, ‘b’, ‘r’, ‘h’, ‘g’, ‘t’, ‘l’, ‘s’, ‘a’, ‘e’}

集合方法 remove()

  • remove(item)
  • 入参:指定元素值
  • 返回:None
  • 如果 item 不存在于集合中则会引发 KeyError

“”“集合方法 remove()”“”
#1、删除已存在的元素
set8 = {1, 2, 3, 4, 5}
set8.remove(1)
print(set8) # 打印 {2, 3, 4, 5}
#2、删除不存在的元素
set8.remove(100)
print(set8) # 打印报错 KeyError: 100

集合方法 discard()

  • discard(item)
  • 入参:指定对象值
  • 返回:None
  • 元素 item 不存在没影响,不会抛出 KeyError 错误

“”“集合方法 discard()”“”
#1、删除已存在的元素
st = {1, 2, 3, 4, 5}
st.discard(1)
print(st)

#2、删除不存在的元素
st.discard(1024)
print(st)
输出结果为:
{2, 3, 4, 5}
{2, 3, 4, 5}

集合方法 pop()

  • pop() 随机删除集合的一个元素并返回该元素
  • 入参:无。
  • 返回:被移除的元组。
  • 如果集合为空则会引发 KeyError

“”“集合方法 pop()”“”
#1、随机删除某个对象
st = {‘yu’,1, 2, 3, 4, 5}
st.pop()
print(st)

#2、集合本身为空会报错
st = set()
st.pop() # KeyError: ‘pop from an empty set’

集合方法 clear()

  • clear():清空集合,移除所有元素
  • 入参:无
  • 返回:None

“”“集合方法 clear()”“”
#1、清空集合
st = {1, 2, 3, 4, 5}
st.clear()

集合运算

  • 交集运算intersection()
  • 并集运算union()
  • 差集运算difference()

集合运算:交集

  • 交集运算
  • intersection() 交集
  • 操作符:&

“”“集合运算:交集”“”
#交集运算
set1 = {1, 3, 2}
set2 = {2, 4, 3}
print(set1.intersection(set2)) # 打印 {2, 3}
print(set1 & set2) # 打印 {2, 3}

集合运算:并集

  • 并集运算
  • union()
  • 操作符:

“”“集合运算:并集”“”
#求两个集合的并集
set1 = {1, 3, 2}
set2 = {2, 4, 3}
print(set1.union(set2)) # 打印 {1, 2, 3, 4}
print(set1 | set2) # 打印 {1, 2, 3, 4}

集合运算:差集

  • 差集运算
  • difference()
  • 操作符: -

“”“集合运算:差集”“”
#集合求差集
set1 = {1, 3, 2}
set2 = {2, 4, 3}
print(set1.difference(set2)) # 打印 {1}
print(set1 - set2) # 打印 {1}

集合推导式

  • 类似列表推导式,同样集合支持集合推导式
  • 语法:
    {x for x in … if …}

#使用推导式生成集合
“”“集合推导式”“”

#使用推导式生成集合
set10 = set()
for s in ‘hogwartsss’:
if s in ‘hello word’:
set10.add(s)
print(set10) # 打印 {‘h’, ‘r’, ‘o’, ‘w’}

st = {x for x in ‘hogwarts’ if x in ‘hello world’}
print(st) # 打印 {‘h’, ‘r’, ‘o’, ‘w’}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值