当前位置: 首页 > article >正文

【python】集合

在Python中,集合(set)是一种内置的数据结构,用于存储唯一的元素。集合是一个无序的、不包含重复元素的数据集合。它主要用于成员资格测试、消除重复元素以及数学上的集合操作(如并集、交集、差集等)。

创建集合

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

使用花括号{}创建一个集合:

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

>>> my_set
{1, 2, 3, 4}

使用set()函数来创建一个集合:

>>> my_set_2 = set([1, 2, 3, 4])

>>> my_set_2
{1, 2, 3, 4}

注意:创建一个空集合必须用set()而不是{},因为{}是用来创建一个空字典。

使用花括号创建集合时,如果花括号内包含的是可哈希的、且唯一的元素(如数字、字符串、元组),则创建的是集合。如果包含的是列表等可变对象,则会报错。

>>> {[1, 2, 3, 4], "hello", 12}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

使用set()函数可以将任何可迭代对象(如列表、元组、字符串等)转换为集合,同时去除其中的重复元素。

>>> set("Morris 18845398990")
{'M', '1', '8', '4', 'r', ' ', '3', '9', '0', 'i', 'o', 's', '5'}

>>> set([1, 2 ,3 ,4])
{1, 2, 3, 4}

>>> set((1, 2 ,3 ,4))
{1, 2, 3, 4}

集合的基本操作

添加元素

>>> my_set
{1, 2, 3, 4}

# 添加元素5,成功
>>> my_set.add(5)

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

# 再次添加元素5,不成功
>>> my_set.add(5)

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

删除元素

set.remove(item):移除元素item,如果元素不存在则报错

>>> my_set.remove(3)

>>> my_set.remove(3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 3

set.discard(item):移除元素item,如果元素不存在则不报错

>>> my_set.discard(4)

>>> my_set.discard(4)

>>> my_set
{1, 2, 5}

set.pop():随机移除一个元素并返回它

>>> my_set.pop()
1

清空集合

>>> my_set
{2, 5}

# 清空集合
>>> my_set.clear()

>>> my_set
set()

检查元素是否存在

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

# 检查元素2是否在集合中
>>> 2 in my_set
True

# 检查元素5是否在集合中
>>> 5 in my_set
False

集合的数学操作

并集

>>> {1, 2, 3} | {3, 4, 5}
{1, 2, 3, 4, 5}

>>> {1, 2, 3}.union({3, 4, 5})
{1, 2, 3, 4, 5}

交集

>>> {1, 2, 3} & {3, 4, 5}
{3}

>>> {1, 2, 3}.intersection({3, 4, 5})
{3}

差集

>>> {1, 2, 3} - {3, 4, 5}
{1, 2}

>>> {1, 2, 3}.difference({3, 4, 5})
{1, 2}

对称差集

>>> {1, 2, 3} ^ {3, 4, 5}
{1, 2, 4, 5}

>>> {1, 2, 3}.symmetric_difference({3, 4, 5})
{1, 2, 4, 5}

集合的迭代

集合中的元素是无序的,因此可以通过循环来迭代集合中的元素:

>>> for s in {1, 2, 3, 4}:
...     print(s)
...
1
2
3
4

集合的常用方法

copy():拷贝一个集合

>>> my_set
{1, 2, 3, 4}

>>> my_set.copy()
{1, 2, 3, 4}

difference_update(set):方法用于移除两个集合中都存在的元素。difference_update()方法与difference()方法的区别在于difference()方法返回一个移除相同元素的新集合,而difference_update()方法是直接在原来的集合中移除元素,没有返回值。

>>> my_set
{1, 2, 3, 4}

>>> my_set.difference_update({2, 4, 6})

>>> my_set
{1, 3}

intersection_update():用于获取两个或更多集合中都重叠的元素,即计算交集。intersection_update()方法不同于 intersection()方法,因为intersection()方法是返回一个新的集合,而intersection_update()方法是在原始的集合上移除不重叠的元素。

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

>>> my_set.intersection_update({2, 4, 6})

>>> my_set
{2, 4}

symmetric_difference_update():移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。

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

>>> my_set.symmetric_difference_update({2, 4, 6})

>>> my_set
{1, 3, 6}

isdisjoint():判断两个集合是否包含相同的元素,如果没有返回True,否则返回False。

>>> {1, 2, 3, 4}.isdisjoint({2, 4, 6})
False

issubset():判断指定集合是否为该方法参数集合的子集。

>>> {1, 2}.issubset({1, 2, 3, 4})
True

issuperset():判断该方法的参数集合是否为指定集合的子集。

>>> {1, 2, 3, 4}.issuperset({1, 2})
True

update():给集合添加元素

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

>>> my_set.update({4, 5, 6})

>>> my_set
{1, 2, 3, 4, 5, 6}

len():计算集合元素个数

>>> len(my_set)
6

http://www.kler.cn/a/428849.html

相关文章:

  • WPS不登录无法使用基本功能的解决方案
  • 云上贵州多彩宝荣获仓颉社区先锋应用奖 | 助力数字政务新突破
  • STM32 学习笔记【补充】(十)硬件I2C读写MPU6050
  • IO进程----进程
  • ARM架构中如何判断stage 1 on/off
  • 计算机网络 | IP地址、子网掩码、网络地址、主机地址计算方式详解
  • 第3章:文本样式 --[CSS零基础入门]
  • 组件开发的环境准备
  • Linux用户与权限、IP地址与远程管理详解及命令
  • 【Java】类似王者荣耀游戏
  • MONI后台管理系统-数据库设计
  • 【机器学习】支持向量机(SVM)详解:原理与优化
  • Unity 使用LineRenderer制作模拟2d绳子
  • 力扣--LCR 172.统计目标成绩的出现次数
  • 解密时序数据库的未来:TDengine Open Day技术沙龙精彩回顾
  • leetcode 62.不同路径
  • 26备战秋招day17——机器学习基础
  • 1195口袋的天空——并查集+贪心——洛谷
  • Java 基础之 JDBC:连接数据库的强大工具
  • [学习笔记]从Flexbox到Grid布局的实战指南
  • C# 实现 OPCClient(使用 OPCDAAuto.dll)
  • E217 PHP+MYSQL+LW+摄影工作室网站的设计与实现 源代码 配置文档 全套资料
  • Ubuntu 24上设置DNS服务器
  • 神经网络入门实战:(十八)Argmax函数的详细介绍,可以用来计算模型训练准确率
  • Java的Stream流:文件处理、排序与串并行流的全面指南
  • 智能方法求解-圆环内传感器节点最大最小距离分布