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

python之set详谈

# 作者: 大数据 浪哥
# 2025年07月11日17时15分37秒
# 集合(set)是由一组无序且唯一的元素组成的集合。
# 使用场景是去重
#用哈希实现
# 集合的元素可以是任何类型,包括数字、字符串、元组、列表等。

可以使用大括号 { } 创建集合,元素之间用逗号 , 分隔, 或者也可以使用 set() 函数从列表创建集合

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


def use_set():"""使用集合:return:"""set1 = {1, 2, 3, 4, 5}      #和字典一样,{}表示空字典,set()表示空集合;和字典区别是没有冒号print(type(set1))print(len(set1))set2={}                     #定义一个空字典print(type(set2))print(len(set2))set3 = set()                #定义一个空集合print(type(set3))print(len(set3))#print(set[1])是错误的,因为集合没有索引(无序的) 不支持随机访问def use_set_operation():"""集合的操作:return:"""set1 = {1, 2, 3, 4, 5}set2 = {4, 5, 6, 7, 8}# 1.求并集set3=set1.union(set2)print(set3)set4=set2.union(set1)    #求并集print(set4)print(set1.union(set2))     #求并集不改变原集合print('-'*50)# 2.求交集print(set1.intersection(set2))print(set1&set2)print(set1.isdisjoint(set2))  # 判断set1和set2是否有交集 如果没有返回True,否则返回 False。print('-' * 50)# 3.求差集print(set1.difference(set2))print(set1-set2)print('-' * 50)# 4.求对称差集    即两个集合中各自特有的的元素print(set1.symmetric_difference(set2))print(set1^set2)#异或操作print('-' * 50)# 5.判断子集和超集print(set1.issubset(set2))    #判断set1是否是set2的子集print(set2.issuperset(set1))    #判断set2是否是set1的超集 超集即是指一个集合包含另一个集合的全部元素print('-' * 50)# 6.更新集合print(set1)print(set2)set1.update(set2)    #更新set1,将set2的元素添加到set1中print(set1)set1.intersection_update(set2)    #更新set1,将set1和set2的交集更新到set1中print(set1)set1.difference_update(set2)    #更新set1,将set1和set2的差集更新到set1中print(set1)set1.symmetric_difference_update(set2)    #更新set1,将set1和set2的对称差集更新到set1中print(set1)print('-' * 50)# 7.其他操作print(set1)print(set2)set1.add(9)    #添加元素到set1中print(set1)set1.remove(9)    #从set1中删除元素print(set1)set1.discard(10)    #删除元素,如果元素不存在,不报错print(set1)set1.pop()    #随机删除一个元素,并返回该元素print(set1)set1.clear()    #清空set1print(set1)set1.copy()    #复制set1print(set1)set1.update([1, 2, 3, 4, 5])    #更新set1,将列表的元素添加到set1中print(set1)set1.intersection_update([4, 5, 6, 7, 8])    #更新set1,将set1和列表的交集更新到set1中print(set1)set1.difference_update([4, 5, 6, 7, 8])    #更新set1,将set1和列表的差集更新到set1中print(set1)set1.symmetric_difference_update([4, 5, 6, 7, 8])    #更新set1,将set1和列表的对称差集更新到set1中print(set1)print('-'*50)def use_generator():"""集合的生成器:return:"""set1 = {i for i in range(1, 10)}#集合生成式print(type(set1))print(set1)my_tuple = tuple(i for i in range(1, 10))  #元组生成式print(type(my_tuple))print((my_tuple))#为什么生成元组的元素不能修改,因为元组是不可变的set1 = set(my_tuple)print(type(set1))print(set1)set2 = {i**2 for i in range(1, 10)}#i**2表示i的平方print(type(set2))print(set2)my_set={x for x in 'hello world'}print(type(my_set))print(my_set)my_set={x for x in 'hello world' if x not in 'ld'}#去除'ld'中的元素print(my_set)def use_set_query():"""集合的查询:return:"""basket = {'apple', 'orange', 'apple', 'pear', 'orange','banana'}print(basket)print(len(basket))print('orange' in basket)#判断元素是否在集合中 是则返回True,否则返回Falsebasket.add('grape')print(basket)x=basket.copy()print(x)print(id(x))print(id(basket))def use_operators():"""集合的运算符重写:return:"""set1 = {1, 2, 3, 4, 5}set2 = {4, 5, 6, 7, 8}print(set1 | set2)  # 并集print(set1 & set2)  # 交集print(set1 - set2)  # 差集print(set1 ^ set2)  # 对称差集   即两个集合中各自特有的的元素  不同时存在于两个集合中的元素  即两个集合的并集中去掉两个集合的交集的部分print('-'*50)if __name__ == '__main__':#use_set()#use_set_operation()#use_generator()#use_set_query()use_operators()
http://www.xdnf.cn/news/15107.html

相关文章:

  • LeetCode经典题解:128、最长连续序列
  • TCP服务器与客户端三种方法实现
  • Linux权限的概念
  • SM712.TCT Semtech TVS二极管——电子设备的终极电路守护
  • DNS(Domain Name System,域名系统)
  • 计算机毕业设计ssm晋中大学城校园论坛 SSM大学城学生社区互动管理平台 JavaWeb高校校园信息交流与服务系统
  • java底层的native和沙箱安全机制
  • 系统思考:多元胜过能力
  • 鸿蒙 Secure Boot 全流程解析:从 BootROM 到内核签名验证的实战指南
  • 2025 年值得尝试的 6 大内容管理系统 (CMS)
  • 【实用IP查询工具】IP数据云-IP地址查询离线库使用方案
  • 【操作系统】Linux 中的 exec 命令
  • RK3566/RK3568 Android11 CAN开发(内核配置+测试验证+安卓app开发)
  • STM32F103之存储/启动流程
  • HarmonyOS基础概念
  • 【TCP/IP】17. 移动 IP
  • Swift 解 LeetCode 324:一步步实现摆动排序 II,掌握数组重排的节奏感
  • 雷达遥感星座微波射频组件抗辐照MCU的选型与实践
  • 【JMeter】接口加密
  • 【JMeter】调试方法
  • 学弟让我帮忙写一个学生管理系统的后端,我直接上科技
  • [大模型问数]实现大模型调用MYSQL(03)【MCP笔记】
  • Webview 中可用的 VS Code 方法
  • Playwright Python 教程:网页自动化
  • 飞算JavaAI:新一代智能编码引擎,革新Java研发范式
  • Linux进程间通信--命名管道
  • 深度学习入门教程(三)- 线性代数教程
  • react打包发到线上报错Minified React error #130
  • 如何快速掌握WeNet:从零到一的端到端语音识别学习指南
  • spring-ai RAG(Retrieval-Augmented Generation)