您的位置:

Python中Set的高效数据存储和集合运算

一、Set的使用

Set是Python中的一种集合数据类型,它表示一组无序的、唯一的、不可变的元素。使用大括号{}或set()函数来创建Set对象。

set1 = {1, 2, 3, 4, 5} # 使用大括号创建Set
set2 = set([3, 4, 5, 6, 7]) # 使用set()函数创建Set

Set中的元素可以是数字、字符串、元组等不可变类型,但不能是列表和字典等可变类型。

set3 = {1, "hello", (1,2,3)}
set4 = {[1,2,3], {"name":"John"}} # 错误,列表和字典是可变类型

Set支持添加、删除、并、交、差等常用操作。

set1.add(6) # 添加元素6
set2.remove(7) # 删除元素7
set3.union(set4) # 并操作,返回{1, "hello", (1,2,3), [1,2,3], {"name":"John"}}
set1.intersection(set2) # 交操作,返回{3, 4, 5}
set1.difference(set2) # 差操作,返回{1, 2, 6}

二、Set的特点

与列表和字典相比,Set具有以下两个特点:

1、无序性

Set中的元素是无序的,不能像列表和元组一样按照顺序访问,只能通过遍历或者成员判断的方式访问。这主要是因为Set是用哈希表实现的,因此无法按照插入顺序排序。

2、唯一性

Set中的元素是唯一的,不能出现重复元素。这是因为Set底层是用哈希表实现的,哈希表中的每个元素都是唯一的。

三、Set的优势

Set作为一种数据结构,具有很多优越性能。

1、高效的集合运算

可以通过union、intersection和difference等操作,对两个集合进行求并、交、差等操作,并且这些操作都可以在常数时间内完成,因此比列表和字典要快很多。

2、快速的成员检查

由于Set底层是用哈希表实现的,因此可以很快地判断一个元素是否在Set中。

3、去重和排序

可以利用Set对列表或者数组进行去重操作,并且去重后的元素是无序的,因此比排序去重要快很多。

四、示例代码

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

# 并集
print(set1.union(set2)) # {1, 2, 3, 4, 5, 6, 7}

# 交集
print(set1.intersection(set2)) # {3, 4, 5}

# 差集
print(set1.difference(set2)) # {1, 2}

# 添加元素
set1.add(6)
print(set1) # {1, 2, 3, 4, 5, 6}

# 删除元素
set2.remove(7)
print(set2) # {3, 4, 5, 6}

# 成员检查
print(1 in set1) # True

# 列表去重
lst = [1, 2, 3, 4, 4, 3, 2, 1]
print(list(set(lst))) # [1, 2, 3, 4]