Python学习之集合set

  • Post category:Python

Python学习之集合set

什么是集合

集合(set)是一种无序、不重复元素的容器类型,可以进行集合运算,比如交集、并集和差集等。

集合和列表(list)、元组(tuple)、字典(dictionary)不同的是,它没有顺序,不能使用下标(index)来过去其中的元素。另外,集合内部的元素必须是不可变对象。

创建集合

Python中可以用set函数或者花括号{}来创建集合,不同之处在于set函数可以接收可迭代对象作为参数而创建集合。示例如下:

# 使用set函数创建集合
set1 = set([1, 2, 3, 4, 5])
print(set1) # 输出 {1, 2, 3, 4, 5}

# 使用花括号创建集合
set2 = {1, 3, 5, 7, 9}
print(set2) # 输出 {1, 3, 5, 7, 9}

集合运算

集合有多种运算,包括交集、并集、差集、异或集等。其中的运算符如下:

运算符 描述
| 并集,返回包含两个集合中所有元素的新集合。
& 交集,返回两个集合中都包含的元素的新集合。
差集,返回在第一个集合中但不在第二个集合中的元素的新集合。
^ 异或集,返回包含两个集合中非重复元素的新集合。

示例如下:

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

# 并集
print(set1 | set2) # 输出 {1, 2, 3, 4, 5, 6}

# 交集
print(set1 & set2) #输出 {3, 4}

# 差集
print(set1 - set2) # 输出 {1, 2}

# 异或集
print(set1 ^ set2) # 输出 {1, 2, 5, 6}

集合方法

集合有很多有用的方法可以使用,以下是一些常用方法的示例:

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

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

# 移除元素
set1.remove(6)
print(set1) # 输出 {1, 2, 3, 4, 5}

# 随机移除一个元素
set1.pop()
print(set1) # 输出 {2, 3, 4, 5}

# 更新集合
set1.update(set2)
print(set1) # 输出 {2, 3, 4, 5, 6}

# 长度
print(len(set1)) # 输出 5

# 清空集合
set1.clear()
print(set1) # 输出 set()

上面的示例包含了集合中的添加、移除、更新、长度、清空等操作。在实际编程中,我们需要根据实际情况选择使用相应的方法。

示例说明

下面是两个示例说明:

示例一:去重

假设我们有一个列表,其中包含了多个重复的元素。

lst = [1, 2, 2, 3, 3, 4, 4, 5, 5, 5]

我们需要得到一个不包含重复元素的新列表,可以使用集合来实现。

set1 = set(lst)
new_lst = list(set1)
print(new_lst) # 输出 [1, 2, 3, 4, 5]

示例二:数据比较

假设我们有两个集合A和B,我们需要找到它们之间的相同元素和不同元素。

setA = {'a', 'b', 'c', 'd'}
setB = {'c', 'd', 'e', 'f'}

# 相同元素
print(setA & setB) # 输出 {'c', 'd'}

# 不同元素
print(setA - setB) # 输出 {'a', 'b'}
print(setB - setA) # 输出 {'e', 'f'}

我们可以通过使用集合的交集和差集来得到相同元素和不同元素。