Python集合(Set)操作详解 - 探索Python项目核心数据类型

Python集合(Set)操作详解 - 探索Python项目核心数据类型

explore-python :green_book: The Beauty of Python Programming. explore-python 项目地址: https://gitcode.com/gh_mirrors/ex/explore-python

集合的基本概念

集合(Set)是Python中一种非常重要的内置数据类型,它与数学中的集合概念高度一致。集合具有以下三大核心特性:

  1. 无序性:集合中的元素没有固定顺序
  2. 唯一性:集合中不允许存在重复元素
  3. 可变性:集合是可变的,可以动态添加和删除元素

集合与字典(dict)类似,都是一组键(key)的集合,但集合不存储值(value)。这种特性使得集合在去重、成员测试等场景下表现出色。

集合的创建方法

Python提供了多种创建集合的方式:

使用花括号直接创建

fruits = {'apple', 'banana', 'orange', 'apple'}
print(fruits)  # 输出:{'banana', 'orange', 'apple'}(自动去重)

使用set()构造函数创建

# 从字符串创建
letters = set('hello')
print(letters)  # 输出:{'e', 'h', 'l', 'o'}

# 从列表创建
numbers = set([1, 2, 2, 3, 4, 4])
print(numbers)  # 输出:{1, 2, 3, 4}

# 从元组创建
colors = set(('red', 'green', 'blue', 'green'))
print(colors)  # 输出:{'blue', 'green', 'red'}

注意:创建空集合必须使用set(),因为{}表示的是空字典。

集合的常用操作

遍历集合元素

集合虽然是无序的,但仍然可以使用for循环遍历:

s = {'Python', 'Java', 'C++', 'Go'}
for language in s:
    print(language)

添加元素

使用add()方法添加单个元素:

s = {1, 2, 3}
s.add(4)
print(s)  # 输出:{1, 2, 3, 4}

使用update()方法添加多个元素(可接受列表、元组、字符串等可迭代对象):

s = {1, 2}
s.update([3, 4], (5, 6), 'ab')
print(s)  # 输出:{1, 2, 3, 4, 5, 6, 'a', 'b'}

删除元素

remove()方法删除指定元素(元素不存在会抛出KeyError):

s = {'a', 'b', 'c'}
s.remove('b')
print(s)  # 输出:{'a', 'c'}

discard()方法删除指定元素(元素不存在不会报错):

s = {'a', 'b', 'c'}
s.discard('d')  # 不会报错

pop()方法随机删除并返回一个元素(集合为空会抛出KeyError):

s = {'a', 'b', 'c'}
item = s.pop()
print(f"删除的元素是:{item},剩余集合:{s}")

clear()方法清空集合:

s = {1, 2, 3}
s.clear()
print(s)  # 输出:set()

集合运算

Python集合支持丰富的数学运算,这些运算既可以通过方法实现,也可以通过运算符实现。

并集(Union)

a = {1, 2, 3}
b = {3, 4, 5}

# 方法实现
print(a.union(b))  # 输出:{1, 2, 3, 4, 5}

# 运算符实现
print(a | b)      # 输出:{1, 2, 3, 4, 5}

交集(Intersection)

# 方法实现
print(a.intersection(b))  # 输出:{3}

# 运算符实现
print(a & b)             # 输出:{3}

差集(Difference)

# 方法实现
print(a.difference(b))  # 输出:{1, 2}

# 运算符实现
print(a - b)           # 输出:{1, 2}

对称差集(Symmetric Difference)

# 方法实现
print(a.symmetric_difference(b))  # 输出:{1, 2, 4, 5}

# 运算符实现
print(a ^ b)                     # 输出:{1, 2, 4, 5}

子集与超集判断

x = {1, 2}
y = {1, 2, 3}

print(x.issubset(y))    # 输出:True
print(y.issuperset(x))  # 输出:True
print(x <= y)           # 输出:True
print(y >= x)           # 输出:True

集合的应用场景

  1. 数据去重:快速去除列表中的重复元素

    lst = [1, 2, 2, 3, 4, 4, 5]
    unique = list(set(lst))
    
  2. 成员测试:判断元素是否存在于集合中(比列表更高效)

    valid_users = {'user1', 'user2', 'user3'}
    if input_username in valid_users:
        print("Access granted")
    
  3. 关系运算:快速进行集合间的数学运算

  4. 过滤数据:找出两个数据集的差异

性能特点与注意事项

  1. 查找效率:集合基于哈希表实现,查找操作的时间复杂度为O(1)

  2. 内存占用:集合比列表占用更多内存

  3. 不可哈希元素:集合只能包含不可变(可哈希)类型,不能包含列表、字典等可变类型

  4. 冻结集合frozenset是不可变集合,可以作为字典的键或其他集合的元素

fs = frozenset([1, 2, 3])
d = {fs: "value"}

通过掌握集合的这些特性和操作方法,你可以在Python编程中更加高效地处理需要去重、快速查找和集合运算的场景。集合是Python中一个强大而灵活的工具,合理使用可以显著提升代码的性能和可读性。

explore-python :green_book: The Beauty of Python Programming. explore-python 项目地址: https://gitcode.com/gh_mirrors/ex/explore-python

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

荣铖澜Ward

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值