Python集合运算:从基础到进阶全解析
Python基础:集合运算进阶
文章目录
- Python基础:集合运算进阶
- 一、知识点详解
- 1.1 集合运算(运算符 vs 方法)
- 1.2 集合运算符优先级
- 1.3 集合关系判断方法
- 1.4 方法对比
- 二、说明示例
- 2.1 权限管理系统
- 2.2 数据去重与差异分析
- 2.3 数学运算应用
- 三、学习总结
- 四、扩展知识
- 不可变集合 `frozenset`
- 4.1 `frozenset`特性
- 4.2 创建`frozenset`
- 4.3 `frozenset`应用场景
- 五、知识点考察题
一、知识点详解
1.1 集合运算(运算符 vs 方法)
集合运算可类比数学中的集合操作,是数据分析、权限管理等场景的核心工具。
运算类型 | 运算符 | 对应方法 | 功能描述 |
---|---|---|---|
并集 | | | union() | 合并两集合所有元素(自动去重) |
交集 | & | intersection() | 获取两集合的共有元素 |
差集 | - | difference() | 保留 A中存在但B中不存在 的元素 |
对称差集 | ^ | symmetric_difference() | 获取两集合的 独有元素之和(即不同时存在的元素) |
运算符与方法的区别:
- 运算符方式更简洁,但只能用于两个集合之间的运算
- 方法形式支持多集合操作,如
A.union(B, C, D)
- 方法可以链式调用,如
A.intersection(B).difference(C)
示例:
# 集合运算
A={1,2}
B={2,3}# 并集 → 合并两集合所有元素(自动去重)
# 使用运算符
print(A | B) # 输出:{1,2,3}
# 使用方法
print(A.union(B)) # 输出:{1,2,3} # 交集 → 获取两集合的共有元素
print(A & B) # 输出:{2}
print(A.intersection(B)) # 输出:{2}# 差集 → 保留A中存在但B中不存在的元素
print(A - B) # 输出:{1}
print(A.difference(B)) # 输出:{1}
print(B - A) # 输出:{3}
print(B.difference(A)) # 输出:{3}# 对称差集 → 获取两集合的独有元素之和
print(A ^ B) # 输出:{1,3}
print(A.symmetric_difference(B)) # 输出:{1,3}# 多集合运算示例
A = {1, 2, 3}
B = {3, 4, 5}
C = {5, 6, 7}# 三集合并集
union_result = A.union(B, C) # {1,2,3,4,5,6,7}# 三集合交集
intersection_result = A.intersection(B, C) # 空集(无共有元素)# 链式调用示例
result = A.union(B).difference(C) # {1,2,3,4}
1.2 集合运算符优先级
从高到低
排序(同级运算符按从左到右
顺序计算):
优先级 | 运算符 | 名称 | 示例 |
---|---|---|---|
1 | - | 差集 | A - B |
2 | & | 交集 | A & B |
3 | ^ | 对称差集 | A ^ B |
4 | | | 并集 | A | B |
5 | == , != | 相等比较 | A == B |
6 | <= , < | 子集判断 | A <= B |
7 | >= , > | 超集判断 | A >= B |
注意:进行混合运算时, 有( )时应先进行( )内运算
# 混合运算的陷阱演示
result = {1,2,3} - {2} & {3} # 实际等价于 ({1,2,3} - {2}) & {3}
print(result) # 输出:{3}# 推荐写法(显式括号)
result = ({1,2,3} - {2}) & {3} # 意图清晰
优先级记忆口诀:
"先差后交再对称,最后并集别忘记,不确定时就加括号!"
1.3 集合关系判断方法
集合关系判断用于分析多个数据集之间的包含、重叠或独立关系,是数据分析与系统开发中的高频操作。
以下是核心方法分类:
方法名 | 运算符等价 | 功能描述 |
---|---|---|
issubset() | <= | 判断当前集合是否为另一集合的子集(所有元素均在目标集合中存在) |
issuperset() | >= | 判断当前集合是否为另一集合的超集(包含目标集合的所有元素) |
isdisjoint() | 无 | 判断两集合是否无交集(无共同元素) |
intersection() | & | 返回两集合的交集(共同元素),支持多集合操作 |
方法详解:
issubset()
:子集判断
功能:验证集合A的所有元素是否都存在于集合B中。
语法:A.issubset(B)
或A <= B
或A < B
(真子集)
示例:A = {1, 2} B = {1, 2, 3, 4}print(A.issubset(B)) # 输出:True print(A <= B) # 输出:True print(A < B) # 输出:True(A是B的真子集)C = {1, 2} print(C <= C) # 输出:True(自己是自己的子集) print(C < C) # 输出:False(不是真子集)
- 应用场景:
权限验证:检查用户权限是否为所需权限的子集
数据包含关系:验证一个数据集是否完全包含在另一个数据集中
issuperset()
:超集判断
功能:验证集合A是否包含集合B的所有元素。
语法:A.issuperset(B)
或A >= B
或A > B
(真超集)
示例:A = {1, 2, 3, 4} B = {1, 2}print(A.issuperset(B)) # 输出:True print(A >= B) # 输出:True print(A > B) # 输出:True(A是B的真超集)
- 易错点:
issuperset()
与 “补集” 概念无关,仅判断包含关系
>
表示真超集,即 A 包含 B 的所有元素且 A 不等于 B
isdisjoint()
:不相交判断
功能:判断两集合是否无共同元素。
语法:A.isdisjoint(B)
示例:A = {1, 2, 3} B = {4, 5, 6} C = {3, 4, 5}print(A.isdisjoint(B)) # 输出:True(没有共同元素) print(A.isdisjoint(C)) # 输出:False(有共同元素3)
- 特性:
可接受任意可迭代对象参数(如列表、元组),无需显式转换为集合,比计算交集更高效。 - 应用场景:黑名单过滤、敏感词检测、冲突检测。
intersection()
:交集计算
功能:返回两集合的共有元素。
语法:A.intersection(B)
或A & B
扩展应用:
支持多集合操作:A.intersection(B, C)
可用于替代isdisjoint()
:若交集为空,则两集合不相交。
示例:A = {1, 2, 3} B = {3, 4, 5} print(A.intersection(B)) # 输出:{3} print(A & B) # 输出:{3}
- 集合相等判断
集合相等判断也是集合关系判断的重要部分,用于判断两个集合是否包含完全相同的元素(顺序不重要)。
语法:== 和 !=
示例:A = {1, 2, 3} B = {3, 2, 1} C = {1, 2, 4}print(A == B) # 输出:True(元素相同,顺序不重要) print(A != C) # 输出:True
1.4 方法对比
需求 | 推荐方法 | 理由 |
---|---|---|
快速判断是否有共同元素 | isdisjoint() | 高效,直接返回布尔值 |
多集合交集计算 | intersection() | 支持多参数,返回具体交集元素 |
验证严格子集关系 | < 运算符 | 严格子集(A是B的真子集)需用运算符< ,而非issubset() |
动态数据关系判断 | 运算符(& , <= ) | 代码更简洁,适合链式操作 |
二、说明示例
2.1 权限管理系统
# 定义角色权限集合
admin_perms = {"删除", "编辑", "查看"}
user_perms = {"编辑", "查看"}
guest_perms = {"查看"}# 当前用户 = 普通用户权限(user_perms)
current_user = user_perms# 验证用户权限
print("能删除吗? : ", "删除" in current_user) # 输出:False
print("能编辑么? : ", "编辑" in current_user) # 输出:True
2.2 数据去重与差异分析
# 两日商品销售数据
sales_day1 = {"手机", "耳机", "充电宝"}
sales_day2 = {"耳机", "笔记本", "鼠标"}# 合并两日所有商品(并集)
all_products = sales_day1 | sales_day2 # 输出:{'手机','耳机','充电宝','笔记本','鼠标'}# day2相交day1新增商品(差集)
new_products = sales_day2 - sales_day1 # 输出:{'笔记本','鼠标'}
2.3 数学运算应用
# 定义 男生爱好 和 女生爱好
hobbies_boy = {"篮球", "游戏", "音乐"}
hobbies_girl = {"购物", "音乐", "追剧"}# 交集:共同爱好
common_hobbies = hobbies_boy & hobbies_girl
print("共同爱好:", common_hobbies) # 输出:{'音乐'}# 差集:男生特有爱好
boy_only = hobbies_boy - hobbies_girl
print("男生特有:", boy_only) # 输出:{'篮球', '游戏'}# 对称差集:男女生各自独有爱好
unique_hobbies = hobbies_boy ^ hobbies_girl
print("独有爱好:", unique_hobbies) # 输出:{'篮球', '游戏', '购物', '追剧'}
三、学习总结
3.1 集合四大基础运算
-
并集(
|
或union()
):合并所有元素并自动去重,常用于数据整合 -
交集(
&
或intersection()
):获取多个集合共有元素,适合找共同特征 -
差集(
-
或difference()
):保留当前集合独有的元素,用于数据差异分析 -
对称差集(
^
或symmetric_difference()
):收集非共有元素之和,适用于差异对比简单理解:交集用于
找共同点
,并集用于合并数据
,差集用于筛选差异
,对称差集用于找独有元素
3.2 运算符与方法的选用原则
- 运算符(如
| & - ^
):代码简洁,建议用于两个集合的快速操作 - 方法调用(如
union()
):支持多个集合运算和链式操作(如A.union(B).difference(C)
)
3.3 集合关系判断要点
- 包含验证:
issubset()/<=
判断子集,issuperset()/>=
判断超集 - 严格包含:
<
表示真子集,>
表示真超集(要求元素完全包含且集合不等) - 冲突检测:
isdisjoint()
快速判断两集合是否无交集
四、扩展知识
不可变集合 frozenset
frozenset
是集合的不可变版本,创建后无法修改
,但支持集合运算和成员检测。
4.1 frozenset
特性
-
不可变性:创建后无法修改,尝试修改会引发
AttributeError
fs = frozenset([1, 2]) fs.add(3) # 报错:AttributeError
-
哈希性:可作为字典的键或其他集合的元素(普通集合不可)
# 合法用法 data = {frozenset({1,2}): "value"}# 非法用法(普通集合不可哈希) invalid = {{1,2}: "value"} # TypeError
-
内存占用:因不可变特性,内存占用通常比普通集合小
4.2 创建frozenset
# 从列表创建
fs1 = frozenset([1, 2, 3])# 从字符串创建(字符拆分)
fs2 = frozenset("hello") # frozenset({'h','e','l','o'})# 空集合
empty_fs = frozenset()# 从字典创建(获取键)
d = {"a":1, "b":2}
fs3 = frozenset(d) # frozenset({'a','b'})
易错点:
- 非法操作:
frozenset
不支持add()
、remove()
、pop()
等修改操作。 - 元素限制:元素必须是不可变类型(如列表
[1,2]
不可作为元素)。
4.3 frozenset
应用场景
# 1.作为字典键存储配置信息
config = {frozenset(["host", "port"]): "数据库连接配置",frozenset(["user", "password"]): "用户认证信息"
}# 2.需要保证数据不被修改的场景
CONSTANTS = frozenset(["MAX_LIMIT", "TIMEOUT", "RETRIES"])# 3.嵌套集合中的元素
nested_set = {frozenset({1,2}), frozenset({3,4})}# 4. 支持数学运算(并、交、差集等运算)
fs1 = frozenset({1,2})
fs2 = frozenset({2,3})
print(fs1 & fs2) # → {2}
五、知识点考察题
A = {1, 2, 3}
B = {1, 2}
以下哪个选项可以判断集合A包含集合B的所有元素且A≠B?( )❓
- A.
A.issubset(B)
- B.
A < B
- C.
A.issuperset(B)
- D.
A > B
相关文章:
Python集合运算:从基础到进阶全解析
Python基础:集合运算进阶 文章目录 Python基础:集合运算进阶一、知识点详解1.1 集合运算(运算符 vs 方法)1.2 集合运算符优先级1.3 集合关系判断方法1.4 方法对比 二、说明示例2.1 权限管理系统2.2 数据去重与差异分析2.3 数学运算…...
【开源Agent框架】Suna架构设计深度解析与应用实践
一、项目基本介绍 Suna是一款全栈开源的通用型AI代理系统,其名称源自日语"砂"的发音,寓意如流沙般渗透到各类数字任务中。项目采用Apache 2.0协议,由Kortix AI团队维护,核心开发者包括Adam Cohen Hillel等三位主要贡献者。 技术架构全景 系统由四大核心组件构…...
C++类与对象--2 对象的初始化和清理
C面向对象来源于生活,每个对象都有初始化设置和销毁前的清理数据的设置。 2.1 构造函数和析构函数 (1)构造函数 初始化对象的成员属性不提供构造函数时,编译器会提供不带参数的默认构造函数,函数实现是空的构造函数不…...
计网| 网际控制报文协议(ICMP)
目录 网际控制报文协议(ICMP) 一、ICMP 基础特性 二、ICMP 报文分类及作用 差错报告报文 询问报文 网际控制报文协议(ICMP) ICMP(Internet Control Message Protocol,网际控制报文协议)是 …...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
printf耗时高的原因
背景:设备升级初始化失败。具体表现为:app在启动dsp后,需在15秒内与其建立连接以确认通信成功,但当前未能在此时间限制内完成连接。 排查过程:通过在初始化过程中添加耗时打印,发现各阶段耗时虽不高&#…...
20250517 我设想一个空间,无限大,空间不与其中物质进行任何作用,甚至这个空间能容纳可以伸缩的空间
1.我设想一个空间,无限大,空间不与其中物质进行任何作用,甚至这个空间能容纳可以伸缩的空间 您设想的这个空间具有一些有趣的特点: 无限大:空间本身没有边界或限制,理论上可以容纳无限多的物质或结构。非…...
GO语言学习(二)
GO语言学习(二) method(方法) 这一节我们介绍一下GO语言的面向对象,之前我们学习了struct结构体,现在我们来解释一下方法method主要是为了简化代码,在计算同类时,使用函数接收方法…...
神经网络与深度学习第六章--循环神经网络(理论)
#第六章-循环神经网络 前馈神经网络的缺点: ①信息的传递是单向的。前馈神经网络可以看作一个复杂的函数,每次的输入都是独立的,即网络的输出只依赖于当前的输入。前馈神经网络是一种静态网络,没有记忆能力,就无法模拟…...
第三十五节:特征检测与描述-ORB 特征
1. 引言:为什么需要ORB? 在计算机视觉领域,特征检测与描述是许多任务(如图像匹配、目标跟踪、三维重建等)的核心基础。传统的算法如SIFT(尺度不变特征变换)和SURF(加速稳健特征)因其优异的性能被广泛应用,但它们存在两个显著问题: 专利限制:SIFT和SURF受专利保护,…...
重庆 ICPC 比赛游记
2025.5.9 比赛前一天晚上,激动地睡不着觉,起来收拾了好多东西。(其实就四本书,剩下的全是零食……关键在于这四本书基本没用。) 2025.5.10 学校丧心病狂的让我们 6:20 到校门口集合坐车(据说是怕赶不上比…...
二进制与十进制互转的方法
附言: 在计算机科学和数字系统中,二进制和十进制是最常见的两种数制。二进制是计算机内部数据存储和处理的基础,而十进制则是我们日常生活中最常用的数制。因此,掌握二进制与十进制之间的转换方法对于计算机学习者和相关领域的从业者来说至关…...
咖啡叶子病害检测数据集VOC+YOLO格式1468张4类别均为单叶子
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1468 标注数量(xml文件个数):1468 标注数量(txt文件个数):1468 …...
JDBC实现模糊、动态与分页查询的详解
文章目录 一. 模糊查询1. Mysql的写法2. JDBC的实现 二. 动态条件查询1. 创建生成动态条件查询sql的方法2. 完整的动态条件查询类以及测试类 三. 分页查询1. 什么是分页查询?2. 分页查询的分类3. MySQL的实现4. JDBC实现4.1. 创建page页4.2. 分页的实现 本章来讲一下…...
golang读、写、复制、创建目录、删除、重命名,文件方法总结
文章目录 一、只读文件二、写入文件三、复制文件四、创建目录五、删除目录/文件五、重命名文件 一、只读文件 file, err : os.Open("./main.go")defer file.Close() //打开文件一定要关闭关闭文件if err ! nil {fmt.Println("文件打开失败", err)}/*方案一…...
信贷域——互联网金融业务
摘要 本文深入探讨了信贷域全托与半托业务的定义、特点、适用场景及注意事项,并分析了互联网金融核心信息流的多个方面,包括资金流、信息流、风险流、合规流、物流、技术流和商流,还阐述了金融系统“断直连”业务的相关内容,以及…...
计算机操作系统概要
不谋万世者,不⾜谋⼀时。不谋全局者 ,足谋⼀域 。 ——陈澹然《寤⾔》《迁都建藩议》 操作系统 一.对文件简单操作的常用基础指令 ls ls 选项 目录或⽂件名:罗列当前⽬录下的⽂件 -l:以长格式显示⽂件和⽬录的详细信息 -a 或 --all&…...
gRPC开发指南:Visual Studio 2022 + Vcpkg + Windows全流程配置
前言 gRPC作为Google开源的高性能RPC框架,在微服务架构中扮演着重要角色。本文将详细介绍在Windows平台下,使用Visual Studio 2022和Vcpkg进行gRPC开发的完整流程,包括环境配置、项目搭建、常见问题解决等实用内容。 环境准备 1. 安装必要组…...
MATLAB安装常见问题及解决办法
MATLAB安装失败 安装MATLAB时可能会遇到失败的情况,通常是由于系统环境不兼容或安装文件损坏。确保系统满足MATLAB的最低要求,并重新下载安装文件。如果问题仍然存在,可以尝试以管理员身份运行安装程序。 许可证激活问题 在激活MATLAB许可证时,可能会遇到激活失败或无法…...
英语学习5.17
attract 👉 前缀:at-(朝向) 👉 含义:吸引(朝某处拉) 例句:The flowers attract bees. (花吸引蜜蜂。) distract 👉 前缀ÿ…...
深入解析 React 的 useEffect:从入门到实战
文章目录 前言一、为什么需要 useEffect?核心作用: 二、useEffect 的基础用法1. 基本语法2. 依赖项数组的作用 三、依赖项数组演示1. 空数组 []:2.无依赖项(空)3.有依赖项 四、清理副作用函数实战案例演示1. 清除定时器…...
Scrapy进阶实践指南:从脚本运行到分布式爬取
Scrapy作为Python生态中最强大的爬虫框架之一,其官方文档的"Common Practices"章节总结了多个高频使用场景的解决方案。本文将深入解析如何通过脚本控制爬虫、多爬虫协同工作、分布式部署策略以及反反爬技巧,帮助开发者突破基础使用限制。 一…...
(面试)TCP、UDP协议
TCP(传输控制协议)和UDP(用户数据报协议)是互联网核心的传输层协议,负责应用程序之间的数据传输。它们在设计目标、特性和适用场景上有显著差异: TCP:面向连接,可靠的,速…...
数据库blog1_信息(数据)的处理与效率提升
🌿信息的处理 🍂实际中离不开信息处理 ● 解决问题的建模 任何对问题的处理都可以看作数据的输入、处理、输出。 eg.一个项目中,用户点击信息由前端接收传递到后端处理后返回结果eg.面对一个问题,我们在搜集信息后做出处理与分析…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(23):受身形
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(23):受身形 1、前言(1)情况说明(2)工程师的信仰2、知识点(1)うけみけい 受身形1、グループ2、グループ3、グループ(2) か ~かどうか1、か2、かどうか3、单词(1)日语(2)日语片假名单词4、相近词练习5、单词…...
kubernetes的Service与服务发现
kubernetes的Service与服务发现 1 Service1.1 Service概念1.2 Service类型1.2.1 ClusterIP1.2.2 NodePort1.2.3 LoadBalancer1.2.4 ExternalName1.2.5 Headless 2 CoreDNS2.1 CoreDNS概念2.2 CoreDNS插件架构2.3 CoreDNS在kubernetes下的工作原理2.4 Pod上的DNS解析策略 3 Ingr…...
python打卡day28
类的简单复习 知识点回顾: 类的定义pass占位语句类的初始化方法类的普通方法类的继承:属性的继承、方法的继承 类就是对属性和方法的封装,一个常见的类的定义包括了: 关键字class类名语法固定符号冒号(:)一个初始化函数__init__(…...
【学习心得】英伟达的诸多显卡性能对比
型号 CUDA核心 显存容量 算力(FP32/TFLOPS) A100 6912 HBM2e/80G 19.49 A800 6912 HBM2e/80G 19.49 H100 14592 HBM3/80G 51.22 H800 14592 HBM3/80G 51.22 T4 4352 GDDR6/16G 8.14 P40 3840 GDDR5/24G 11.76 L40 18176 G…...
使用Pinia持久化插件-persist解决刷新浏览器后数据丢失的问题
文章目录 一、现象二、原因三、解决:使用Pinia持久化插件-persist安装persistpinia中使用persist插件在创建定义状态时配置持久化 四、参考资料 一、现象 登录成功后,能正常看到文章分类的数据,但只要刷新浏览器就提示服务异常 二、原因 P…...
mysql中4种扫描方式和聚簇索引非聚簇索引【爽文一篇】
目录 一 mysql的聚簇索引&非聚簇索引 1.1 数据表 1.2 聚簇索引 1.3 非聚簇索引 1.4 覆盖索引 二 mysql的4种扫描查询 2.1 全表扫描 2.2 索引扫描 2.3 覆盖索引扫描 2.4 回表扫描 2.5 总结 三 mysql的回表查询详解 3.1 回表查询 一 mysql的聚簇索引&非聚簇…...
交流学习 | 江西同为科技有限公司赴海尔总部考察交流
2025年4月8日至9日,江西同为科技有限公司在江西省科技装备商会的带领下,以蔡文君经理为代表,一行人赴山东青岛海尔总部开展两天的考察交流活动。本次考察不仅深入剖析了海尔企业的前沿技术与管理理念,更促进了行业内科技创新、商业…...
AGI大模型(20):混合检索之rank_bm25库来实现词法搜索
1 混合检索简介 混合搜索结合了两种检索信息的方法 词法搜索 (BM25) :这种传统方法根据精确的关键字匹配来检索文档。例如,如果您搜索“cat on the mat”,它将找到包含这些确切单词的文档。 基于嵌入的搜索(密集检索) :这种较新的方法通过比较文档的语义来检索文档。查…...
QT调用Halcon查询所有摄像头名称
QT软件中的测试代码 //获取当前连接的所有设备信息实例HTuple hv_general, hv_ValueList;InfoFramegrabber("DirectShow", "device", &hv_general, &hv_ValueList);qDebug()<<QString::fromUtf8(hv_general.S().Text());//Value list for de…...
16 C 语言布尔类型与 sizeof 运算符详解:布尔类型的三种声明方式、执行时间、赋值规则
1 布尔类型 1.1 布尔类型概述 布尔类型用于表示逻辑上的真(true)和假(false)两种状态,是编程中条件判断和逻辑运算的基础。在 C 语言中,布尔值的表示方式随着标准的发展而不断完善。 1.2 布尔类型的三种声…...
配置ssh服务-ubuntu到Windows拷贝文件方法
背景: 在工作中,需要频繁从ubuntu到Windows拷贝文件,但有时间总是无法拷出,每次重启虚拟机又比较麻烦并且效率较低。可以使用scp服务进行拷贝,不仅稳定而且高效,现将配置过程进行梳理,以供大家参…...
使用ts-node搭建typescript运行环境
目录 首先安装好node.js 安装typescript 安装ts-node 创建一个typescript文件 使用ts-node运行typescript文件 首先安装好node.js 安装typescript npm install typescript4.7.4 -g 安装ts-node npm install ts-nodev10.8.1 -g 创建一个typescript文件 文件名为app.ts&a…...
如何深入学习MATLAB的高级应用?
文章目录 要深入学习 MATLAB 的高级应用,需要在掌握基础语法后,系统性地学习特定领域的工具箱和算法,并通过实战项目提升能力。以下是分阶段的学习路径和资源推荐: 一、深化核心技能 高级矩阵运算与线性代数 matlab % 稀疏矩阵处…...
英汉 “语言” 初印象:符号背后的文化底色
英汉 “语言” 初印象:符号背后的文化底色 原始尺寸更换图片 在生活里,我们每天都会进行各式各样的交流,或许不曾留意,汉语和英语这两种极具代表性的语言,从最简单的问候语中就能展现出它们独特的文化内…...
C语言_编译全攻略_从原理到实战的深度解析
在 C 语言开发中,编译是连接源代码与可执行程序的关键桥梁。理解编译过程不仅能提升开发效率,更能帮助我们定位内存泄漏、性能瓶颈等深层次问题。本文将从编译原理出发,结合 GCC 工具链,带你掌握 C 语言编译的核心技术。 一、编译流程底层原理 1. 编译四阶段详解 预处理…...
AGI大模型(21):混合检索之混合搜索
为了执行混合搜索,我们结合了 BM25 和密集检索的结果。每种方法的分数均经过标准化和加权以获得最佳总体结果 1 代码 先编写 BM25搜索的代码,再编写密集检索的代码,最后进行混合。 from rank_bm25 import BM25Okapi from nltk.tokenize import word_tokenize import jieb…...
Vue3学习(组合式API——ref模版引用与defineExpose编译宏函数)
目录 一、ref模版引用。 (1)基本介绍。 (2)核心基本步骤。(以获取DOM、组件为例) (3)案例:获取dom对象演示。 <1>需求:点击按钮,让输入框聚焦。 (4&…...
Zephyr OS 中的 FIFO 接口应用介绍
目录 概述 1 FIFO的接口函数 1.1 K_FIFO_DEFINE函数 1.2 k_fifo_init函数 1.3 k_fifo_put函数 1.4 k_fifo_get 函数 1.5 k_fifo_is_empty 函数 2 应用验证 2.1 UART中使用FIFO范例 2.2 生产-消费类型范例 3 注意事项 3.1 内存管理 3.2 线程安全边界 概述 Zephy…...
前端基础之CSS
基本语法规范 引入方式 1.内部引入 <style>p{color:blue ;font-size:30px;}</style> 2.行级引入 <p style "color : green ;font-size : 40px;">hello ,wyx</p><p>hello , wyx1</p><h1>hello , wyx2</h1> 3.外…...
【Linux网络】DNS与ICMP
DNS(Domain Name System) DNS是一整套从域名映射到IP的系统。 DNS背景 TCP/IP使用IP地址和端口号来确定网络上的一台主机的一个程序。但是IP地址不方便记忆。 于是人们发明了一种叫主机名的东西,是一个字符串,并且使用hosts文件来描述主机名和IP地址的…...
第二十七天打卡
一些函数 for i in range(2, 10000):if is_prime(i):print(i) if ...: 这是 Python 里的条件判断语句,当 is_prime(i) 的返回值为 True 时,就会执行 if 语句块里的代码。 func.__name__ 的作用 func.__name__ 是 Python 中函数对象的一个特殊属性&am…...
38-日语学习小程序
系统功能特点: 技术栈: springBootVueMysqlUni-app 功能点: 用户端 管理员端 用户端: 1.首页: 轮播图展示、N2词汇列表、网站公告列表 2.学习模块: 有五十音图 词汇 语法 3.社区模块: 可进行发帖 也可查看帖子进行回复 可查看小组 4.我的: N2词汇(点击查看详情…...
信贷风控笔记6——风控常用指标(面试准备14)
一、PSI: 1.计算过程:变量分箱10-20箱;统计各分箱内样本占比; 算各个分箱的index(实际占比-预期占比)*ln(实际占比/预期占比); 将各分箱index求和得PSI 2.情况分类&…...
UDP三种通信方式
单播(Unicast) 单播是最常见的通信方式,数据从一个发送方传输到一个特定的接收方。发送方将数据包发送到接收方的IP地址和端口号,接收方通过监听指定的端口接收数据。单播适用于一对一的通信场景。 import java.net.DatagramPac…...
Windows运维工具批处理版
测试环境:windows10 必看: 1.新建记事本,另存为:文件类型所有文件,文件名运维.bat,编码ansi,复制代码,保存,双击运行 2.有的功能需要输入管理员密码,如果没…...
无需配置光猫,使用网管交换机配合路由器的IPTV功能实现单线复用
一、背景 弱电箱和电视柜只预留了一根网线,路由器放在电视柜,想实现既可以上网又可以正常观看iptv,本文提供了一种方法。 二、准备工作 1、带iptv功能的路由器;2、水星sg105pro网管交换机;3、网线若干; …...