第三十一节课:Python集合类型及操作详解

Python集合类型及操作详解

目录


一、集合类型定义

核心特性

  • 无序性:元素无固定顺序
  • 唯一性:元素不可重复
  • 不可变性:元素必须是不可变类型(字符串/数字/元组等)

集合创建方式

# 创建集合的两种方式
s1 = {"P", "Y", 123}  # 使用大括号
s2 = set("Pypy123")   # 使用set函数 → {'1', '2', '3', 'P', 'y'}

# 创建空集合(必须用set())
empty_set = set()

重要特性验证

# 自动去重验证
test_set = {"Python", 123, "Python", 123}
print(test_set)  # 输出:{123, 'Python'}

二、集合操作符

基本集合运算

操作符名称描述示例
``并集包含所有元素的集合
-差集在A中但不在B中的元素A - B → {123}
&交集同时存在的元素A & B → {'P', 'Y'}
^补集不同时存在的元素A ^ B → {1, 2, 3, 123}

增强赋值操作符

A = {"P", "Y", 123}
B = set("Pypy123")

A |= B      # 等价于 A = A | B
A -= B      # 等价于 A = A - B
A &= B      # 等价于 A = A & B
A ^= B      # 等价于 A = A ^ B

三、集合处理方法

核心操作方法

方法描述示例
s.add(x)添加元素s.add("new")
s.discard(x)移除元素(不报错)s.discard("P")
s.remove(x)移除元素(不存在时报错)s.remove("Y")
s.pop()随机取出并删除元素item = s.pop()
s.clear()清空集合s.clear()
len(s)获取元素个数print(len(s))

遍历技巧

# for循环遍历
s = {"A", "B", "C"}
for item in s:
    print(item)

# while循环遍历(非常用方法)
s = {1, 2, 3}
try:
    while True:
        print(s.pop())
except KeyError:
    pass

四、集合应用场景

典型应用场景

  1. 数据去重
ls = ["P", "P", "Y", "Y", 1, 2, 3]
unique_ls = list(set(ls))  # 去重后转回列表 → [1, 2, 3, 'P', 'Y']
  1. 包含关系检查
keywords = {"if", "else", "while"}
user_input = "if x > 0:"
print(any(word in user_input for word in keywords))  # 输出:True
  1. 集合运算应用
# 网站访问用户分析
day1_users = {"user1", "user2", "user3"}
day2_users = {"user2", "user3", "user4"}

# 计算连续访问用户
continuous_users = day1_users & day2_users

小结

集合三要素

  1. 不可变元素:确保元素的唯一性
  2. 无序存储:元素无索引位置
  3. 高效查找:基于哈希表实现快速查询

三大核心操作对比

操作类型方法示例特点
元素操作add()/remove()维护集合元素
集合运算`/-/&/^`
关系判断in/<=/>=判断包含关系

使用场景速查表

场景类型推荐方法
快速去重set()转换+list()还原
元素存在性检查in操作符
数据关系分析集合运算符

注意:空集合必须使用set()创建,{}表示空字典!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

monday_CN

72小时打磨,值得1元认可

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值