集合的概念、定义以及操作
集合的概念:
类比数学上的集合概念:无序(因此也无法访问)、无重复的元素集合
eg:
str1 = 'abc'#字符串可以进行索引,元素可重复 lst = [1,2,3]#列表可以进行索引,元素可重复 tpl = (1,2,3)#元组可以进行索引,元素可重复 dic = {'name':'jiang','age':18}#字典可以进行索引,元素可重复 jihe = {1,2,3}#集合的创建方式是{},但是里面的元素无法索引,也无法重复
集合又可以分为可变集合与不可变集合
可变集合(set)可以进行交并的操作
而不可变集合(frozenset)则无法进行交并操作
可变集合设置方式:1.直接运用{ }进行创建 2.运用set(iterable),set函数中放置可迭代对象创建
eg:
s1 = {'a','b','c'} s2 = set(range(1,4)) print(s1)#输出:{'b', 'c', 'a'} print(s2)#输出:{1, 2, 3}
不可变结合设置方式:frozenset(iterable),可迭代对象有 字符串、列表、元组、字典的key这些
注意:
设置集合时要注意:如果要设置空集合的话,必须要使用函数set()或者frozenset(),{}会被识别成空字典
s = {} print(type(s))#输出:<class 'dict'>
此外,集合中的元素类型必须是哈希类型(暂时理解为:不可变类型)
s = {[1,2,3]}##列表是一个可变的类型;此外,字典也是一个可变的类型 print(s)#输出:TypeError: unhashable type: 'list'
集合中单一元素的操作
集合的新增:
对象方法:add(元素)
s = {1,2} s.add(3) print(s)
但是注意:增加的元素不能是 list 或者 dict 这种可变类型的元素,否则会报错
集合元素的删除:
1.remove函数 2.discard函数 3.pop函数 4.clear函数
1.remove函数
语法:remove(元素)
2.discard函数作用和remove函数一样,区别在于:remove函数中找不到指定的删除元素时会报错,但是discard函数则不会,找不到指定的删除元素的话就什么事情都不处理
s = {1,2} s.discard(5) print(s)#output:{1, 2}
3.pop函数:删除指定元素并返回其数值
语法:pop(element);若没有指定element的话,那么pop函数就会在集合中 随机 删除元素并返回
s = {1,2,'j','i','a'} v = s.pop() print(v, s)v = s.pop() print(v, s)
这串代码的输出结果,每次运行都不相同
4.clear函数:清空集合
集合之间的操作:
交集、并集、差集(均为对象方法)
1.交集:三个方法
语法:intersection( iterable ),inter表示相互,section表示部分,后面的参数是可迭代对象
(这表明,字符串、列表、字典这些也都可以作为参数,intersection函数的原理就是,将括号里面的可迭代对象转化成集合,再取交集。因此需要注意:【"1","2",【"1","2"】】),这种列表就是错误的,因为集合要求是不可变类型,这个最外层的括号会被转化为集合,而内层的【】却是列表,为可变类型,会报错)
方法二:可以用逻辑符号 & ,同样可以得到一样的结果
s = {1,2,'j','i','a'} t = {1,3,'j','f'} result = s.intersection(t) print(result,type(result))#输出:{1, 'j'} <class 'set'>
注意一点:如果是可变集合与不可变集合取交集,得到的结果是什么类型?
s = {1,2,'j','i','a'} t = frozenset([1,3,'j','f']) result = s.intersection(t) print(result,type(result))#输出:{1, 'j'} <class 'set'>
此时 集合 s 作为对象,得到的结果类型跟s一样为可变集合
当t作为对象时,得到的结果类型为?
s = {1,2,'j','i','a'} t = frozenset([1,3,'j','f']) result = t.intersection(s) print(result,type(result))#输出:{1, 'j'} <class 'set'>
结果类型跟t一样为 不可变类型集合。
说明两个不同类型集合混合时,交集的数据类型和对象集合的类型保持一致
方法三:intersection_update()函数
作用:对于 可变列表 ,取交集以后并更改对应的 可变列表,要注意的是,该对象方法是直接修改列表,没有返回值
s = {1,2,'j','i','a'} t = frozenset([1,3,'j','f']) s.intersection_update(t) print(s)#输出:{1, 'j'}
2.并集:
union函数:也可逻辑运算符 |
s = {1,2,'j','i','a'} t = frozenset([1,3,'j','f']) result = s.union(t) print(result)#output:{'j', 1, 2, 'i', 3, 'f', 'a'}
并集中的update函数:
s = {1,2,'j','i','a'} t = frozenset([1,3,'j','f']) s.update(t) print(s)#output:{1, 2, 3, 'f', 'j', 'i', 'a'}
3.差集:
语法:difference();也可逻辑运算符 -
同样的也有差集的update
集合的判定:
判定一个集合是否包含另一个集合:is super set()
判定一个集合是否包含于另一个集合:is sub set()
判定两个集合是否 不 相交:is dis joint()
s = {1,2} t = {1, 2, 3, 'j', 'f'} result1 = s.issubset(t) print(result1)#output:True result2 = t.issuperset(s) print(result2)#True
集合的概念、定义以及操作相关推荐
- Python(IT峰)笔记07-数据类型详解-元祖的定义与操作,元祖推导式,元祖生成器,yield关键字,字典及定义,字典所支持的操作,zip研所函数,dict转型,字典函数,集合,冰冻集合,集合推导
1.元祖的定义 一组有序数据的组合,元祖一旦定义不可修改,是不可变数据类型 定义空元祖 变量=() 变量=tuple() 变量=(内容1,内容2,内容3,--)直接赋值 特列:变量=内容1,内容2,内 ...
- 群、环、域的概念,定义和理解.
群.环.域的概念,定义和理解. 以下链接很好的解释了群环域的概念. http://sparkandshine.net/algebraic-structure-primer-group-ring-fie ...
- python集合的概念_用Python中的集合Set讲解演示高一数学集合的概念
数学编程不分家,用Python可以方便的表示高中数学知识.现在以集合为例进行讲解,高一数学设计集的概念,讲解了交并补的相关知识,用Python中的集合类型可以方便的表示.同时可以借助数学知识更好的理解 ...
- 《C++Primer》第九章-顺序容器-学习笔记(1)-顺序容器定义与操作
<C++Primer>第九章-顺序容器-学习笔记(1) 文章目录 <C++Primer>第九章-顺序容器-学习笔记(1) 摘要 顺序容器的定义 容器元素的初始化 将一个容器初始 ...
- pod概念及常用操作
pod概念及常用操作 pod概念:什么是pod init容器(初始化容器) pause容器(Infra容器) 修改默认infro容器 普通pod: pod资源限制: pod生命周期介绍 Pending ...
- linq判断集合中相同元素个数_JavaSe集合的概念以及集合框架介绍
###集合 今天任务 1.概念1.1 集合的概念1.2 集合的框架结果介绍1.3 集合和数组的对比 2.Collection接口2.1 Collections中常用的方法 3.泛型3.1 什么是泛型3 ...
- 从集合大小的定义到数学结构-解决了多年的疑惑
从集合大小的定义到数学结构 [ 作者:佚名 | 转贴自:网络 | 点击数:1476 | 更新时间:2006-5-5 | 文章录入:ltq ] 一.古怪的定义 "自然数和正偶数,哪一种数更多? ...
- shell基础(2):编程基础之变量:全局/局部/环境变量(作用域、定义、操作)、位置参数、数组
对shell变量有一个系统性的了解 变量的种类:局部.全局.环境变量 变量的定义和操作:赋值.取值.取消变量 特殊变量:位置参数. $? 数组的定义和使用 变量的作用域 文章目录 1. 变量的种类 1 ...
- arcgis坐标系未定义_科学网—ArcGIS中的坐标系:基本概念和常用操作 - 李郎平的博文...
ArcGIS中的坐标系:基本概念和常用操作 李郎平,Email: lilp@lreis.ac.cn 中国科学院地理科学与资源研究所,资源与环境信息系统国家重点实验室 缘由:介绍GIS(地理信息系统)中 ...
最新文章
- 聊聊jump consistent hash
- 微信小程序问题解决方案
- JAVA---DOS命令学习
- 【渝粤教育】 国家开放大学2020年春季 2772家畜环境卫生与设施 参考试题
- linux:根据关键字或日期查找日志
- 舵机控制激光头(51单片机)
- 数学计算机学具制作,神奇的数学
- javascript window.history
- svm分类代码_SVM的原理及实现垃圾邮件分类代码解析:
- 【bootstrap】-----使用核心
- 【人民币识别】基于matlab GUI人民币序列号识别【含Matlab源码 908期】
- OpenWRT配置 -- 网络配置network文件
- win10 外接显示器后出现input signal out of range
- mybatis Parameter ‘XXX‘ not found
- JavaScript 进阶知识 - 特效篇(一)
- 软件工程改错题例题:请将下面的非结构化程序改成结构化程序
- C#服务端的微信小游戏——多人在线角色扮演(六)
- 信用社考试计算机知识,农村信用社考试计算机知识模拟试题及答案
- 精品咖啡知识不能不知道的8个地方
- u盘一插上计算机就不响应,u盘插上电脑没反应,详细教您修复无法识别u盘问题...
热门文章
- Permissions 0664 for ‘yanyongx.pem‘ are too open.
- HTML制作圣诞树,小白都会使用的教程。
- 24c02存储器(iic通信协议)
- 全面剖析E-mail收发失败的原因
- poj1061 青蛙的约会(扩展欧几里德)
- 基于自定义注解校验入参Model中的必传字段
- Ubuntu16.04+1080ti显卡驱动安装流程+循环登录问题【集锦】
- android概述和环境搭建
- 电子商务安全欺诈预防市场现状研究分析-
- 图解央行房贷新政 首付才是刚需族最大门槛