1. 集合概述
在Python中,集合(set)是一种无序的、不重复的数据类型。集合本质上是由一组不重复的元素组成,可以进行交集、并集等操作。
#创建集合
set1 = {1,2,3,4,5}
set2 = set([3,4,5,6,7])
#输出集合
print(set1) # {1,2,3,4,5}
print(set2) # {3,4,5,6,7}
#交集
print(set1 & set2) # {3,4,5}
#并集
print(set1 | set2) # {1,2,3,4,5,6,7}
2. 集合特性
2.1 无序性
集合中的元素是无序的,因此我们无法通过下标访问集合中的某个元素。
set1 = {1,2,3,4,5}
print(set1[0]) # TypeError: 'set' object does not support indexing
2.2 不重复性
集合中的元素是不重复的,因此如果我们试图添加一个已经存在的元素到集合中,该元素不会被添加到集合中。
set1 = {1,2,3,4,5}
set1.add(2)
print(set1) # {1,2,3,4,5}
2.3 可变性
集合是可变的,因此我们可以向集合中添加元素、删除元素。
set1 = {1,2,3,4,5}
set1.add(6)
print(set1) # {1,2,3,4,5,6}
set1.discard(2)
print(set1) # {1,3,4,5,6}
3. 集合操作方法
3.1 添加元素
向集合中添加元素可以使用add()方法。
set1 = {1,2,3,4,5}
set1.add(6)
print(set1) # {1,2,3,4,5,6}
3.2 删除元素
从集合中删除元素可以使用discard()方法,该方法会将元素从集合中删除。如果该元素不存在于集合中,该方法不会报错。
set1 = {1,2,3,4,5}
set1.discard(2)
print(set1) # {1,3,4,5}
3.3 求交集
求两个集合的交集可以使用&符号或intersection()方法。
set1 = {1,2,3,4,5}
set2 = {3,4,5,6,7}
#使用&符号
print(set1 & set2) # {3,4,5}
#使用intersection()方法
print(set1.intersection(set2)) # {3,4,5}
3.4 求并集
求两个集合的并集可以使用|符号或union()方法。
set1 = {1,2,3,4,5}
set2 = {3,4,5,6,7}
#使用|符号
print(set1 | set2) # {1,2,3,4,5,6,7}
#使用union()方法
print(set1.union(set2)) # {1,2,3,4,5,6,7}
3.5 求差集
求两个集合的差集可以使用-符号或difference()方法。注意,差集是指只属于第一个集合而不属于第二个集合的元素。
set1 = {1,2,3,4,5}
set2 = {3,4,5,6,7}
#使用-符号
print(set1 - set2) # {1,2}
#使用difference()方法
print(set1.difference(set2)) # {1,2}
4. 实战案例
下面是一个使用集合进行去重的例子,该例子可以去除一个列表中的重复元素。
#定义一个列表
lst = [1,2,2,3,3,3,4,4,4,4,5,5,5,5,5]
#将列表转换为集合,自动去重
s = set(lst)
#将集合转换为列表
lst2 = list(s)
print(lst2) # [1,2,3,4,5]
使用集合进行去重可以大大提高运行效率,特别是在处理大量数据的情况下。由于集合是由哈希表实现的,因此判断一个元素是否在集合中时,时间复杂度只有O(1)。