集合的概念:

类比数学上的集合概念:无序(因此也无法访问)、无重复的元素集合

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

集合的概念、定义以及操作相关推荐

  1. Python(IT峰)笔记07-数据类型详解-元祖的定义与操作,元祖推导式,元祖生成器,yield关键字,字典及定义,字典所支持的操作,zip研所函数,dict转型,字典函数,集合,冰冻集合,集合推导

    1.元祖的定义 一组有序数据的组合,元祖一旦定义不可修改,是不可变数据类型 定义空元祖 变量=() 变量=tuple() 变量=(内容1,内容2,内容3,--)直接赋值 特列:变量=内容1,内容2,内 ...

  2. 群、环、域的概念,定义和理解.

    群.环.域的概念,定义和理解. 以下链接很好的解释了群环域的概念. http://sparkandshine.net/algebraic-structure-primer-group-ring-fie ...

  3. python集合的概念_用Python中的集合Set讲解演示高一数学集合的概念

    数学编程不分家,用Python可以方便的表示高中数学知识.现在以集合为例进行讲解,高一数学设计集的概念,讲解了交并补的相关知识,用Python中的集合类型可以方便的表示.同时可以借助数学知识更好的理解 ...

  4. 《C++Primer》第九章-顺序容器-学习笔记(1)-顺序容器定义与操作

    <C++Primer>第九章-顺序容器-学习笔记(1) 文章目录 <C++Primer>第九章-顺序容器-学习笔记(1) 摘要 顺序容器的定义 容器元素的初始化 将一个容器初始 ...

  5. pod概念及常用操作

    pod概念及常用操作 pod概念:什么是pod init容器(初始化容器) pause容器(Infra容器) 修改默认infro容器 普通pod: pod资源限制: pod生命周期介绍 Pending ...

  6. linq判断集合中相同元素个数_JavaSe集合的概念以及集合框架介绍

    ###集合 今天任务 1.概念1.1 集合的概念1.2 集合的框架结果介绍1.3 集合和数组的对比 2.Collection接口2.1 Collections中常用的方法 3.泛型3.1 什么是泛型3 ...

  7. 从集合大小的定义到数学结构-解决了多年的疑惑

    从集合大小的定义到数学结构 [ 作者:佚名 | 转贴自:网络 | 点击数:1476 | 更新时间:2006-5-5 | 文章录入:ltq ] 一.古怪的定义 "自然数和正偶数,哪一种数更多? ...

  8. shell基础(2):编程基础之变量:全局/局部/环境变量(作用域、定义、操作)、位置参数、数组

    对shell变量有一个系统性的了解 变量的种类:局部.全局.环境变量 变量的定义和操作:赋值.取值.取消变量 特殊变量:位置参数. $? 数组的定义和使用 变量的作用域 文章目录 1. 变量的种类 1 ...

  9. arcgis坐标系未定义_科学网—ArcGIS中的坐标系:基本概念和常用操作 - 李郎平的博文...

    ArcGIS中的坐标系:基本概念和常用操作 李郎平,Email: lilp@lreis.ac.cn 中国科学院地理科学与资源研究所,资源与环境信息系统国家重点实验室 缘由:介绍GIS(地理信息系统)中 ...

最新文章

  1. 聊聊jump consistent hash
  2. 微信小程序问题解决方案
  3. JAVA---DOS命令学习
  4. 【渝粤教育】 国家开放大学2020年春季 2772家畜环境卫生与设施 参考试题
  5. linux:根据关键字或日期查找日志
  6. 舵机控制激光头(51单片机)
  7. 数学计算机学具制作,神奇的数学
  8. javascript window.history
  9. svm分类代码_SVM的原理及实现垃圾邮件分类代码解析:
  10. 【bootstrap】-----使用核心
  11. 【人民币识别】基于matlab GUI人民币序列号识别【含Matlab源码 908期】
  12. OpenWRT配置 -- 网络配置network文件
  13. win10 外接显示器后出现input signal out of range
  14. mybatis Parameter ‘XXX‘ not found
  15. JavaScript 进阶知识 - 特效篇(一)
  16. 软件工程改错题例题:请将下面的非结构化程序改成结构化程序
  17. C#服务端的微信小游戏——多人在线角色扮演(六)
  18. 信用社考试计算机知识,农村信用社考试计算机知识模拟试题及答案
  19. 精品咖啡知识不能不知道的8个地方
  20. u盘一插上计算机就不响应,u盘插上电脑没反应,详细教您修复无法识别u盘问题...

热门文章

  1. Permissions 0664 for ‘yanyongx.pem‘ are too open.
  2. HTML制作圣诞树,小白都会使用的教程。
  3. 24c02存储器(iic通信协议)
  4. 全面剖析E-mail收发失败的原因
  5. poj1061 青蛙的约会(扩展欧几里德)
  6. 基于自定义注解校验入参Model中的必传字段
  7. Ubuntu16.04+1080ti显卡驱动安装流程+循环登录问题【集锦】
  8. android概述和环境搭建
  9. 电子商务安全欺诈预防市场现状研究分析-
  10. 图解央行房贷新政 首付才是刚需族最大门槛