「Python系列」Python集合

本文涉及的产品
性能测试 PTS,5000VUM额度
容器镜像服务 ACR,镜像仓库100个 不限时长
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: Python集合(Set)是一种无序且不包含重复元素的数据结构。它主要用于成员关系测试和消除重复元素。集合的主要特点包括无序性、互异性和确定性。

一、Python集合

Python集合(Set)是一种无序且不包含重复元素的数据结构。它主要用于成员关系测试和消除重复元素。集合的主要特点包括无序性、互异性和确定性。

创建集合

你可以使用大括号 {} 或者 set() 函数来创建一个集合。

# 使用大括号创建集合
my_set = {
   1, 2, 3, 4}

# 使用set()函数创建集合
another_set = set([1, 2, 2, 3, 4, 4])  # 重复元素会被自动移除

# 创建一个空集合
empty_set = set()

集合操作

集合支持多种操作,包括并集、交集、差集、对称差集等。

# 并集
set1 = {
   1, 2, 3}
set2 = {
   3, 4, 5}
union_set = set1 | set2  # {1, 2, 3, 4, 5}

# 交集
intersection_set = set1 & set2  # {3}

# 差集(在set1中但不在set2中的元素)
difference_set = set1 - set2  # {1, 2}

# 对称差集(在set1或set2中,但不同时在两个集合中的元素)
symmetric_difference_set = set1 ^ set2  # {1, 2, 4, 5}

# 判断一个元素是否在集合中
if 3 in set1:
    print("3 is in set1")

# 添加元素到集合中
set1.add(5)  # set1 becomes {1, 2, 3, 5}

# 移除元素从集合中
set1.remove(1)  # set1 becomes {2, 3, 5}

# 集合的长度
length = len(set1)  # length is 3

集合与其他数据结构的交互

集合也可以与其他数据结构(如列表、元组等)进行交互。

# 将列表转换为集合,自动去除重复元素
list1 = [1, 2, 2, 3, 4, 4]
set_from_list = set(list1)  # {1, 2, 3, 4}

# 将集合转换回列表
list_from_set = list(set_from_list)  # [1, 2, 3, 4] 注意:列表的顺序可能与原列表不同,因为集合是无序的。

# 将元组转换为集合
tuple1 = (1, 2, 3, 3)
set_from_tuple = set(tuple1)  # {1, 2, 3}

集合的用途

  • 去重:集合常用于去除列表或其他可迭代对象中的重复元素。
  • 成员关系测试:快速判断一个元素是否属于某个集合。
  • 集合运算:进行集合的并、交、差、对称差等运算。
  • 数据结构优化:在处理大量数据时,使用集合可以提高查找和操作的效率。

二、Python集合内置方法

方法 描述

add()| 为集合添加元素
clear()| 移除集合中的所有元素
copy()| 拷贝一个集合
difference()| 返回多个集合的差集
difference_update()| 移除集合中的元素,该元素在指定的集合也存在。
discard()| 删除集合中指定的元素
intersection()| 返回集合的交集
intersection_update()| 返回集合的交集。
isdisjoint()| 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
issubset()| 判断指定集合是否为该方法参数集合的子集。
issuperset()| 判断该方法的参数集合是否为指定集合的子集
pop()| 随机移除元素
remove()| 移除指定元素
symmetric_difference()| 返回两个集合中不重复的元素集合。
symmetric_difference_update()| 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
union()| 返回两个集合的并集
update()| 给集合添加元素
len()| 计算集合元素个数

三、Python集合常见问题

当使用Python集合(Set)时,你可能会遇到一些常见问题。以下是一些常见的问题和相应的案例代码。

问题1:如何检查一个元素是否在集合中?

案例代码:

my_set = {
   1, 2, 3, 4, 5}

# 检查元素3是否在集合中
if 3 in my_set:
    print("3 is in the set.")
else:
    print("3 is not in the set.")

问题2:如何添加元素到集合中?

案例代码:

my_set = {
   1, 2, 3}

# 添加元素4到集合中
my_set.add(4)
print(my_set)  # 输出: {1, 2, 3, 4}

# 添加多个元素到集合中
my_set.update([5, 6, 7])
print(my_set)  # 输出: {1, 2, 3, 4, 5, 6, 7}

问题3:如何从集合中移除元素?

案例代码:

my_set = {
   1, 2, 3, 4, 5}

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

# 如果尝试移除不存在的元素,会抛出KeyError异常
try:
    my_set.remove(6)
except KeyError:
    print("Element 6 is not in the set.")

# 移除所有元素
my_set.clear()
print(my_set)  # 输出: set()

问题4:如何对集合进行交集、并集、差集和对称差集运算?

案例代码:

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

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

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

# 差集(set1中有而set2中没有的元素)
difference = set1 - set2
print(difference)  # 输出: {1, 2}

# 对称差集(在set1或set2中,但不同时在两个集合中的元素)
symmetric_difference = set1 ^ set2
print(symmetric_difference)  # 输出: {1, 2, 5, 6}

问题5:如何比较两个集合是否相等?

案例代码:

set1 = {
   1, 2, 3}
set2 = {
   3, 2, 1}

# 使用==运算符比较集合是否相等
if set1 == set2:
    print("set1 and set2 are equal.")
else:
    print("set1 and set2 are not equal.")

问题6:集合是否支持索引和切片操作?

案例代码:

# 集合不支持索引和切片操作,以下代码会抛出TypeError异常

# my_set[0]  # TypeError: 'set' object is not subscriptable
# my_set[1:3]  # TypeError: 'set' object is not subscriptable

问题7:如何将集合转换为列表、元组或其他数据结构?

案例代码:

my_set = {
   1, 2, 3, 4}

# 将集合转换为列表
my_list = list(my_set)
print(my_list)  # 输出可能是: [1, 2, 3, 4],但顺序可能不同,因为集合是无序的

# 将集合转换为元组
my_tuple = tuple(my_set)
print(my_tuple)  # 输出可能是: (1, 2, 3, 4),但顺序可能不同

# 将集合转换为字典(注意:集合中的元素必须是可哈希的,并且转换后的字典是无序的)
my_dict = dict.fromkeys(my_set, None)
print(my_dict)

四、相关链接

  1. Python下载安装中心
  2. Python官网
  3. Python软件下载
  4. 「Python系列」Python简介及案例
  5. 「Python系列」Python基础语法/数据类型
  6. 「Python系列」Python解释器
  7. 「Python系列」Python运算符
相关文章
|
23天前
|
安全 网络安全 文件存储
思科设备巡检命令Python脚本大集合
【10月更文挑战第18天】
57 1
思科设备巡检命令Python脚本大集合
|
1月前
|
存储 缓存 API
解密 Python 集合的实现原理
解密 Python 集合的实现原理
37 11
|
1月前
|
存储 自然语言处理 数据处理
使用Python计算多个集合的交集详解
使用Python计算多个集合的交集详解
36 1
|
2月前
|
存储 API 索引
Python 的集合是怎么实现的?
Python 的集合是怎么实现的?
48 9
|
2月前
|
存储 索引 Python
Python常用数据结构——集合
Python常用数据结构——集合
|
2月前
|
存储 数据处理 Python
Python中的Set集合:高效数据处理的利器
Python中的Set集合:高效数据处理的利器
38 0
|
2月前
|
Python
python推导式-列表,元组,字典,集合推导式
这篇文章介绍了Python中的推导式,包括列表推导式、元组推导式、字典推导式和集合推导式,提供了它们的基本格式和示例代码,并解释了推导式如何简化循环和条件判断的代码编写。
|
3月前
|
数据采集 编解码 算法
Github | 推荐一个Python脚本集合项目
Github | 推荐一个Python脚本集合项目
|
3月前
|
索引 Python 容器
为什么Python中会有集合set类型?
为什么Python中会有集合set类型?
|
3月前
|
存储 索引 Python
五:《Python基础语法汇总》— 列表&元组&集合
本篇文章讲解了关于列表;元组和集合这三个基本数据类型的常用方法与函数。及同一性操作符;成员判断符;浅拷贝与深拷贝等多方面的知识点
37 4