包含编程资料、学习路线图、源代码、软件安装包等!【[点击这里]】!
Python集合
- 集合(set)是Python中的一种无序、可变且不重复元素的数据结构,类似于数学中的集合概念。
集合的基本特性
- 无序性:元素没有固定顺序
- 唯一性:所有元素都是唯一的(自动去重)
- 可变性:可以添加或删除元素
- 可哈希性:只能包含不可变类型(数字、字符串、元组等)
创建集合
# 使用花括号创建集合
fruits = {'apple', 'banana', 'cherry'}
print(fruits) # 输出可能是: {'banana', 'apple', 'cherry'}(顺序不确定)
# 使用set()函数创建
numbers = set([1, 2, 3, 4, 5]) # 从列表创建
empty_set = set() # 创建空集合(不能用{},这是空字典)
# 自动去重特性
duplicates = {1, 2, 2, 3, 3, 3}
print(duplicates) # 输出: {1, 2, 3}
代码解释:
• 使用{}或set()创建集合
• 空集合必须用set()创建,{}创建的是空字典
• 集合会自动去除重复元素
集合的基本操作
- 添加元素
colors = {'red', 'green', 'blue'}
# 添加单个元素
colors.add('yellow')
print(colors) # 输出可能: {'red', 'green', 'blue', 'yellow'}
# 添加多个元素
colors.update(['orange', 'purple'])
print(colors) # 输出可能包含新添加的颜色
- 删除元素
numbers = {1, 2, 3, 4, 5}
# remove() - 删除指定元素,不存在则报错
numbers.remove(3)
print(numbers) # 输出: {1, 2, 4, 5}
# discard() - 删除指定元素,不存在不报错
numbers.discard(10) # 不会报错
# pop() - 随机删除并返回一个元素
popped = numbers.pop()
print(f"Popped: {popped}, Remaining: {numbers}")
# clear() - 清空集合
numbers.clear()
print(numbers) # 输出: set()
集合运算
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
# 并集
print(A | B) # 输出: {1, 2, 3, 4, 5, 6, 7, 8}
print(A.union(B)) # 同上
# 交集
print(A & B) # 输出: {4, 5}
print(A.intersection(B)) # 同上
# 差集
print(A - B) # 输出: {1, 2, 3}
print(A.difference(B)) # 同上
# 对称差集(仅在其中一个集合中存在的元素)
print(A ^ B) # 输出: {1, 2, 3, 6, 7, 8}
print(A.symmetric_difference(B)) # 同上
集合关系判断
X = {1, 2, 3}
Y = {1, 2, 3, 4, 5}
# 子集判断
print(X <= Y) # 输出: True
print(X.issubset(Y)) # 同上
# 真子集判断
print(X < Y) # 输出: True
# 超集判断
print(Y >= X) # 输出: True
print(Y.issuperset(X)) # 同上
# 无交集判断
print(X.isdisjoint({6, 7, 8})) # 输出: True
集合推导式
类似于列表推导式,可以快速生成集合:
# 生成1-10的平方集合
squares = {x**2 for x in range(1, 11)}
print(squares) # 输出: {64, 1, 4, 36, 100, 9, 16, 49, 81, 25}
# 从列表中创建不重复的大写字母集合
words = ['hello', 'world', 'python']
unique_letters = {char.upper() for word in words for char in word}
print(unique_letters) # 输出: {'D', 'E', 'H', 'L', 'N', 'O', 'P', 'R', 'T', 'W', 'Y'}
不可变集合(frozenset)
当需要不可变的集合时,可以使用frozenset:
# 创建不可变集合
immutable_set = frozenset([1, 2, 3, 4])
# 不可变集合可以作为字典的键
dict_with_frozenset = {immutable_set: "value"}
# 尝试修改会报错
# immutable_set.add(5) # AttributeError
集合的应用场景
1. 去重:快速去除列表中的重复元素
lst = [1, 2, 2, 3, 4, 4, 5]
unique = list(set(lst))
print(unique) # 输出可能是: [1, 2, 3, 4, 5]
2. 成员测试:比列表更高效的成员测试
vowels = {'a', 'e', 'i', 'o', 'u'}
print('e' in vowels) # 输出: True
3. 数学运算:集合的交并差运算
4. 过滤数据:找出两个数据集的差异
db_users = {'alice', 'bob', 'charlie'}
active_users = {'alice', 'bob', 'dave'}
inactive_users = db_users - active_users
print(inactive_users) # 输出: {'charlie'}
集合是Python中处理唯一性数据和数学集合运算的强大工具,由于其基于哈希表的实现,查找操作的时间复杂度为O(1),非常高效。
总结
- 最后希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!
文末福利
- 最后这里免费分享给大家一份Python全套学习资料,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。
包含编程资料、学习路线图、源代码、软件安装包等!【[点击这里]】领取!
- ① Python所有方向的学习路线图,清楚各个方向要学什么东西
- ② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
- ③ 100多个Python实战案例,学习不再是只会理论
- ④ 华为出品独家Python漫画教程,手机也能学习