Skip to content

集合

集合 (Set) 是 Python 中一种无序、不重复元素的集合。它类似于数学中的集合,拥有强大的去重功能,并支持一些数学运算,例如并集、交集、差集等。

集合的特点

  • 集合元素必须是不可变类型,例如数字、字符串、元组等
  • 集合元素无序,元素顺序不固定。
  • 集合元素不重复,重复元素会被自动移除。
  • 集合本身是可变类型,可以添加、删除不可变的元素

集合的创建

使用 {} 创建

python
my_set = {1, 2, 3, 4}
print(my_set) # 输出: {1, 2, 3, 4}

使用 set() 方法创建

python
my_list = [1, 2, 2, 3, 4]
my_set = set(my_list)
print(my_set) # 输出: {1, 2, 3, 4}

集合的操作

添加元素

使用 add() 方法添加单个元素,使用 update() 方法添加多个元素。

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

my_set.update([5, 6, 7])
print(my_set) # 输出: {1, 2, 3, 4, 5, 6, 7}

删除元素

使用 remove() 方法删除指定元素,使用 discard() 方法删除可能存在的元素,使用 pop() 方法随机删除并返回一个元素。

python
my_set = {1, 2, 3, 4}
my_set.remove(3)
print(my_set) # 输出: {1, 2, 4}

my_set.discard(5) # 不会报错
print(my_set) # 输出: {1, 2, 4}

element = my_set.pop()
print(my_set) # 输出: {1, 2}
print(element) # 输出: 1 或者 2 (随机)

集合的遍历

使用 for 循环

这是最常用的遍历集合的方法。for 循环会依次迭代集合中的每个元素。

python
my_set = {1, 2, 3, 4}

for element in my_set:
    print(element)

使用 itertools.chain() 函数

如果要遍历多个集合,可以使用 itertools.chain() 函数将它们连接起来,然后进行遍历。

python
from itertools import chain

set1 = {1, 2, 3}
set2 = {4, 5, 6}

for element in chain(set1, set2):
    print(element)

使用 set.items() 函数

对于 set 的子类 set.items,它是一个字典,我们可以使用 items() 函数获取键值对,然后遍历键值对。

python
my_items = {1: "one", 2: "two"}

for key, value in my_items.items():
    print(f"Key: {key}, Value: {value}")

注意事项

  • 由于集合是无序的,所以遍历顺序是不确定的。
  • 遍历集合时,无法修改集合中的元素。
  • set 的子类 set.items 是字典,所以可以使用 items() 函数获取键值对,然后遍历键值对。

集合的运算

  • 并集: |union() 方法
  • 交集: &intersection() 方法
  • 差集: -difference() 方法
  • 对称差集: ^symmetric_difference() 方法
python
set1 = {1, 2, 3}
set2 = {3, 4, 5}

print(set1 | set2) # 输出: {1, 2, 3, 4, 5}
print(set1 & set2) # 输出: {3}
print(set1 - set2) # 输出: {1, 2}
print(set1 ^ set2) # 输出: {1, 2, 4, 5}

应用场景

  • 去重: 可以使用集合去除列表或其他可迭代对象中的重复元素。
  • 成员判断: 使用 in 关键字判断元素是否在集合中。
  • 数学运算: 可以方便地进行集合的并集、交集、差集等运算。
  • 数据分析: 可以使用集合进行数据去重、查找重复元素、统计元素出现次数等。
python
# 去除列表中的重复元素
my_list = [1, 2, 2, 3, 4, 4, 5]
my_set = set(my_list)
print(my_set) # 输出: {1, 2, 3, 4, 5}

# 判断元素是否在集合中
my_set = {1, 2, 3}
print(1 in my_set) # 输出: True
print(4 in my_set) # 输出: False

# 计算两个集合的交集
set1 = {1, 2, 3}
set2 = {3, 4, 5}
intersection_set = set1 & set2
print(intersection_set) # 输出: {3}

总结

集合 (Set) 是 Python 中一个功能强大的数据结构,可以用于去重、成员判断、数学运算等。掌握集合的使用方法可以有效提高代码的效率和可读性。

Released under the MIT License.