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

Python-11(集合)

与字典类似,集合最大的特点就是唯一性。集合中所有的元素都应该是独一无二的,并且也是无序的。

创建集合

使用花括号

set = {"python","Java"}
print(type(set))

使用集合推导式

set = {s for s in "python"}
print(set)
print(type(set))

体现出集合无序的特征。

使用类型构造器set

set = set("python")
print(set)
print(type(set))

注意:由于集合是无序的,所以不能使用下标索引的方式来对其进行访问。只能使用in或not in来判断某个元素是否在集合中。

去重(唯一性)

可以将有重复元素的列表传入集合,会自动去除重复的元素。

set = set([1,1,2,3,4])
print(set)

集合的内置函数

copy()方法

使用copy方法,实现集合的浅拷贝。

isdisjoint(可迭代对象)方法

使用isdisjoint(可迭代对象)方法,用来判断两个集合是否相关(存在相同元素),False代表有相同元素,True则代表没有相同元素。

s = set("1234")
print(s.isdisjoint(set("3214")))

issubset()方法

使用该方法可以判断该集合是否是另外的集合的子集。

s = set("python")
print(s.issubset("www.python.com"))

issuperset()方法

使用该方法可以判断该集合是否是另外的集合的超集。

s = set("www.python.com")
print(s.issuperset("python"))

union()方法

使用该方法可以构成该集合和另外的集合的并集。

s = set("www.python.com")
print(s.union("JAVA"))

 intersection()方法

使用该方法可以找出该集合和另外的集合的交集。

s = set("www.python.com")
print(s.intersection("JAVApy"))

difference()方法

使用该方法可以找出该集合与另外的集合的差集。

s = set("python")
print(s.difference("JAVApy"))

注意:以上三个方法支持多参数。

symmetric_difference()方法

使用该方法可以求出该集合和另外的集合的对称差集。该方法不能多参数。

s = set("python")
print(s.symmetric_difference("JAVApy"))

运算符

<=:检测子集

<:真子集

>=:超集

>:真超集

|:并集

&:交集

-(减号):差集

^:对称差集

注意:使用运算符时,符号两边必须都是集合类型的数据。方法可以使用任何可迭代对象。

frozenset

python将集合划分为可变(set)和不可变(frozenset)两种对象。

若不是修改集合内容的方法可以适用于frozenset。

t = frozenset("python")

仅适用于set对象的方法(会对集合改变的方法)

update(*others)方法

该方法将使用others参数指定的值来更新集合。

注意:若方法中的参数是others,则说明该方法支持多个参数。;若参数是other,则只能存在一个参数。

s = set("python")
s.update([1,2],"45")
print(s)

intersection_update(*others)、difference_update(*others)和symmetric_difference_update(*others)

这三个方法分别是将交集、差集和对称差集进行更新。

s = set("python")
s.update([1,2],"45")
print(s)
s.intersection_update("python")
print(s)
s.difference_update("Php","Java")
print(s)
s.symmetric_difference_update("hello python")
print(s)

 

add()方法

该方法是将集合中加入输入。当参数是字符串时,该方法会将整个字符串作为一个元素插入到集合中,而不是迭代插入。

s = set("python")
s.add("45")
print(s)

remove(elem)和discard(elem)方法

这两个方法是从集合中删除元素。其区别是,如果指定的元素不存在remove方法会抛出异常,而discard方法则会静默处理。

s = set("python")
s.discard('j')
print(s)
s.remove('a')
print(s

pop()方法

该方法用于随机从集合中弹出一个元素。因为存储顺序是随机的,所以弹出也是随机的。

s = set("python")
print(s.pop())

clear()方法

该方法会直接将集合中的元素数据清空。

s = set("python")
print(s)
s.clear()
print(s)

可哈希

想要正确的创建集合和字典,要求字典的键还有集合的元素都必须是可以哈希的。如果一个对象是可哈希的,那么就要求它的哈希值必须在其整个程序的生命周期内保持不变。

hash(object)函数

通过该函数可以获取一个对象的哈希值。

print(hash(1))
print(hash(1.0))
print(hash(1.01))

求一个整数的哈希值,其哈希值永远等于它自身。如果两个对象的值是相等的,尽管是两个不同的对象,那么它们的哈希是也是相等的。

在python中大部分不可变的对象都是可哈希的,而可变对象则是不可哈希的。

print(hash("python"))
print(hash([1,2,3]))

因为集合是一个可变容器,而集合要求集合中的元素都是可哈希的,所以嵌套集合是不可行的。

x = {1,2,3}
y = {x,4,5}

如果我们非要使用嵌套集合,内层集合必须使用frozenset。

x = frozenset({1,2,3})
y = {x,4,5}
print(y)

http://www.lryc.cn/news/2384600.html

相关文章:

  • 钉钉开发之AI消息和卡片交互开发文档收集
  • JMeter 教程:正则表达式提取器提取 JSON 字段数据
  • Opixs: Fluxim推出的全新显示仿真模拟软件
  • [数据集]无人机视角检测分割数据集合集
  • 佰力博与您探讨PVDF薄膜极化特性及其影响因素
  • C++ std::find() 函数全解析
  • 自动获取ip地址安全吗?如何自动获取ip地址
  • STM32:深度解析RS-485总线与SP3485芯片
  • 亚马逊搜索代理: 终极指南
  • QGraphicsView界面的坑(fitInView()函数没反应)
  • 【Python正则表达式终极指南】从零到工程级实战
  • leetcode 算法每日一题 #1
  • 用matlab提取abaqus odb文件中的节点信息
  • Spring Bean 注册到容器的方式
  • 1537. 【中山市第十一届信息学邀请赛决赛】未命名 (noname)
  • 数据库三范式详解与应用建议
  • 信息学奥赛一本通 1539:简单题 | 洛谷 P5057 [CQOI2006] 简单题
  • C++笔记-封装红黑树实现set和map
  • deepseek模拟美团高级java开发工程师面试题
  • 留给王小川的时间不多了
  • 回溯算法:解锁多种问题的解决之门
  • 国产频谱仪性能如何?矢量信号分析仪到底怎么样?
  • 熔断器(Hystrix,Resilience4j)
  • 贪心算法套路模板+详细适用场景+经典题目清单
  • C++23 容器从其他兼容范围的可构造性与可赋值性 (P1206R7)
  • 多通道振弦式数据采集仪MCU安装指南
  • Axios中POST、PUT、PATCH用法区别
  • synchronized 实现原理
  • SOC-ESP32S3部分:9-GPIO输入按键状态读取
  • 前端(小程序)学习笔记(CLASS 2):WXML模板语法与WXSS模板样式