一、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]