c语言编程笔录

首页 >   > 笔记大全

笔记大全

python数据结构里的集合怎么使用

更新时间:2023-12-07

Python集合概述

Python中的集合是一种可变无序的数据类型,它是由一个或多个不同数据类型的元素所组成,而且相邻的元素不能是相同的。集合中的元素可以是任何可哈希(hashable)的对象,例如字符串、数字、元组(tuple)等,但是集合本身是不可哈希的,这与列表(list)和元组不同。Python集合内部实现了哈希表,所以在集合中查找元素的时间复杂度为 O(1)。


# 创建一个简单的Python集合
my_set = {"hello", "world", "Python"}
print(my_set)

集合的基本操作

Python的集合基本操作与数学中的集合操作类似,我们可以使用各种运算符来操作集合,也可以使用内置函数来完成相应的操作。

1. 添加元素:使用 add() 方法或使用 update() 方法来添加元素,add() 方法只能添加一个元素,而 update() 方法可以添加多个元素。


# 使用 add() 方法添加元素
my_set = {"hello", "world", "Python"}
my_set.add("programming")
print(my_set)

# 使用 update() 方法添加多个元素
my_set = {"hello", "world", "Python"}
my_set.update({"programming", "language"})
print(my_set)

2. 删除元素:使用 remove() 方法或 discard() 方法来删除集合中的元素,两者的区别在于 remove() 方法在删除不存在的元素时会抛出 KeyError 异常,而 discard() 方法不会抛出异常。


# 使用 remove() 方法删除元素
my_set = {"hello", "world", "Python"}
my_set.remove("hello")
print(my_set)

# 使用 discard() 方法删除元素
my_set = {"hello", "world", "Python"}
my_set.discard("hello")
print(my_set)

3. 集合的运算:使用交集、并集、差集等运算来操作集合。


# 创建两个Python集合
set1 = {"hello", "world", "Python"}
set2 = {"Java", "Python", "C++"}

# 交集
print(set1 & set2)

# 并集
print(set1 | set2)

# 差集
print(set1 - set2)

# 对称差集
print(set1 ^ set2)

集合推导式

Python中的集合也支持推导式的操作,使用集合推导式可以方便快捷地创建新的集合。


# 创建集合推导式
my_set = {i for i in range(10)}
print(my_set)

集合的高级操作

Python集合还提供了许多高级操作,例如集合的联合、差分和交叉差分等,在这里我只介绍其中的一些操作。

1. 集合的联合:使用 union() 方法或使用 | 运算符来实现两个或多个集合的联合。


# 创建两个Python集合
set1 = {"hello", "world", "Python"}
set2 = {"Java", "Python", "C++"}

# 使用 union() 方法进行联合操作
set3 = set1.union(set2)
print(set3)

# 使用 | 运算符进行联合操作
set4 = set1 | set2
print(set4)

2. 集合的差分:使用 difference() 方法或使用 - 运算符来实现两个集合的差分操作。


# 创建两个Python集合
set1 = {"hello", "world", "Python"}
set2 = {"Java", "Python", "C++"}

# 使用 difference() 方法进行差分操作
set3 = set1.difference(set2)
print(set3)

# 使用 - 运算符进行差分操作
set4 = set1 - set2
print(set4)

3. 集合的交叉差分:使用 symmetric_difference() 方法或使用 ^ 运算符来实现两个集合的交叉差分操作。


# 创建两个Python集合
set1 = {"hello", "world", "Python"}
set2 = {"Java", "Python", "C++"}

# 使用 symmetric_difference() 方法进行交叉差分操作
set3 = set1.symmetric_difference(set2)
print(set3)

# 使用 ^ 运算符进行交叉差分操作
set4 = set1 ^ set2
print(set4)