Python集合—从零开始学AI


包含编程资料、学习路线图、源代码、软件安装包等!【[点击这里]】!

Python集合
  • 集合(set)是Python中的一种无序、可变且不重复元素的数据结构,类似于数学中的集合概念。

集合的基本特性
  1. 无序性:元素没有固定顺序
  2. 唯一性:所有元素都是唯一的(自动去重)
  3. 可变性:可以添加或删除元素
  4. 可哈希性:只能包含不可变类型(数字、字符串、元组等)

创建集合
# 使用花括号创建集合
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漫画教程,手机也能学习

可以扫描下方二维码领取【保证100%免费在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值