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

Python 集合

Python 集合

  • 1.集合及基本操作
    • 1.1 创建集合
    • 1.2 利用集合去重
    • 1.3 交集、并集、差集和补集
  • 2.集合的常用方法
    • 2.1 添加元素
    • 2.2 删除元素
    • 2.3 集合推导式
  • 3.组合数据类型比较

1.集合及基本操作

集合类型与数学中集合的概念是一致的。它是由 0 个或多个唯一的、不可变的元素构成的无序组合。和字典一样,集合也是通过一对花括号{}来标识的。

集合中的元素是不可重复的, 常常用于检查某个元素是否存在。

集合的元素不能是可变类型,例如列表、字典或者集合本身。

虽然集合中的元素必须是不可变类型,但是集合本身是可变的,可以添加、删除和清空集合元素。

1.1 创建集合

可以使用set()函数创建一个集合, 或者用花括号将一系列以逗号隔开的元素包裹起来创建。

language = set(['C', 'C++', 'Java', 'Python'])
print(language)

在 Python 中使用{}创建的是空字典, 而不是空集合。 创建空集合应该使用set()函数。

print(type({}))

1.2 利用集合去重

集合的重要特征之一就是元素不重复。 因此, 当使用set()函数将其他可迭代对象转换为集合时,该函数会自动过滤掉重复元素。

print(set('我是小嗷犬,喜欢嗷嗷嗷'))

1.3 交集、并集、差集和补集

除了判断成员资格和去重外,集合还有四个常用的操作:交集(&)、并集(|)、差集 ()、补集(^), 操作逻辑与数学定义相同。A、B 两个集合的运算示意图如图所示, 阴影部分是运算结果。
集合运算

language1 = {'C', 'C++', 'Java', 'Python'}
language2 = {'C', 'C++', 'C#', 'Golang'}
print(language1 | language2)
print(language1 - language2)
print(language1 & language2)
print(language1 ^ language2)

2.集合的常用方法

集合也可以通过内置函数len()得到元素个数, 通过in检查某个元素是否存在, 通过copy()方法复制集合。除此之外,还有一些特有的方法,如表所示。

函数或方法描述
S.add(x)如果数据项x不在集合S中,将x增加到s
S.clear()移除S中所有数据项
S.copy()返回集合S的一个拷贝
S.pop()随机返回集合S中的一个元素,如果S为空,产生KeyError异常
S.discard(x)如果x在集合S中,移除该元素;如果x不在,不报错
S.remove(x)如果x在集合S中,移除该元素;不在,产生KeyError异常
S.isdisjoint(T)如果集合S与T没有相同元素,返回True
len(S)返回集合S元素个数
x in S如果x是S的元素,返回True,否则返回False
x not in S如果x不是S的元素,返回True,否则返回False

2.1 添加元素

与列表、字典一样, 集合是可变类型。 可以往集合中添加元素。 通过集合的add()方法来实现。如果元素本身在集合中,则不添加。

language = {'C', 'C++', 'Java', 'Python'}
language.add('C')
print(language)
language.add('C#')
print(language)

2.2 删除元素

集合中有pop()discard()remove()多个删除元素的方法。

language = {'C', 'C++', 'Java', 'Python'}
language.pop()
print(language)
language.discard('C#')
print(language)
language.remove('C++')
print(language)
language.remove('C#')

2.3 集合推导式

与字典推导式类似, 集合推导式使用的也是花括号{}。 不同的是, 集合推导式在for关键字前的表达式结果是一个元素,而不是键值对。语法形式如下:

{expression for item in iterable if condition}
l = ['C', 'C++', 'Java', 'Python']
language = {i for i in l if len(i) > 2}
print(language)

3.组合数据类型比较

到目前为止, 我们已经学习了 Python 中常见的几种组合数据类型:字符串、列表、 元组、字典和集合,如表所示。它们之间有许多的相同点和不同点。

类型标识符可变有序元素
字符串''或"" × × × ✓ \checkmark 字符
列表[ ] ✓ \checkmark ✓ \checkmark 任意类型
元组() × × × ✓ \checkmark 任意类型
字典{} ✓ \checkmark × × ×键值对,键为不可变类型且不重复
集合{} ✓ \checkmark × × ×任意不可变类型,不重复

相关文章:

  • 【DS】5.二叉树大总结!
  • 攻防世界 web2
  • 机器人运动学标定:基于公垂线模型的指数积标定——减少标定参数,避免过度约束
  • 机器学习模型的集成方法总结:Bagging, Boosting, Stacking, Voting, Blending
  • 全志 Melis-4.0(rt-thread内核) 环境搭建与初步编译介绍
  • JUC 中的线程池入门(其实没有那么难)
  • 派福利!通过 Azure 零成本进入 CUDA 编程
  • 10.6日作业
  • Mybatis,动态代理方式的CRUD
  • Linux 进程管理类
  • 魔法方阵(CSP-J模拟赛)
  • 线上服务宕机,码农试用期被毕业,原因竟是给MySQL加个字段
  • 【axios】二次封装——避免重复发送请求
  • 没有那么难,基于 Echarts + Python Flask 动态实时大屏轻松可以实现
  • 【每日一算法】高精度算法 | 加法 | 减法_模板应用
  • ES6指北【2】—— 箭头函数
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • [译]CSS 居中(Center)方法大合集
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 2017前端实习生面试总结
  • 230. Kth Smallest Element in a BST
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • Java Agent 学习笔记
  • opencv python Meanshift 和 Camshift
  • Quartz初级教程
  • Theano - 导数
  • TypeScript迭代器
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • Wamp集成环境 添加PHP的新版本
  • windows-nginx-https-本地配置
  • 创建一个Struts2项目maven 方式
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 前端js -- this指向总结。
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 用Python写一份独特的元宵节祝福
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • Prometheus VS InfluxDB
  • ​低代码平台的核心价值与优势
  • #define、const、typedef的差别
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (LeetCode 49)Anagrams
  • (八)Spring源码解析:Spring MVC
  • (二)斐波那契Fabonacci函数
  • (七)Knockout 创建自定义绑定
  • (四)库存超卖案例实战——优化redis分布式锁
  • .net CHARTING图表控件下载地址
  • .NET CLR Hosting 简介
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .net Stream篇(六)
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET成年了,然后呢?
  • .net快速开发框架源码分享
  • .net项目IIS、VS 附加进程调试
  • @media screen 针对不同移动设备