PYTHON训练营DAY24
# SO代码我们的感情好像跳楼机
# 元组创建时,可以省略括号:my_tuple4 = 10, 20, 'thirty'
# 字符串要加“ ”
元组
一、创建
my_tuple1 = (1, 2, 3)
my_tuple2 = ('a', 'b', 'c')
my_tuple3 = (1, 'hello', 3.14, [4, 5]) # 可以包含不同类型的元素
print(my_tuple1)
print(my_tuple2)
print(my_tuple3)查看类型
print(type(my_tuple2)) # 创建空元组
empty_tuple = ()
# 或者使用 tuple() 函数
empty_tuple2 = tuple()
print(empty_tuple)
print(empty_tuple2)
二、常见用法
(一)索引
my_tuple = ('P', 'y', 't', 'h', 'o', 'n')
print(my_tuple[0]) # 第一个元素
print(my_tuple[2]) # 第三个元素
print(my_tuple[-1]) # 最后一个元素
(二)切片(取值)
my_tuple = (0, 1, 2, 3, 4, 5)
print(my_tuple[1:4]) # 从索引 1 到 3 (不包括 4)
print(my_tuple[:3]) # 从开头到索引 2
print(my_tuple[3:]) # 从索引 3 到结尾
print(my_tuple[::2]) # 每隔一个元素取一个
(三)长度获取
my_tuple = (1, 2, 3)
print(len(my_tuple))
三、管道与元组
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline
from sklearn.metrics import accuracy_score# 1. 加载数据
iris = load_iris()
X = iris.data
y = iris.target# 2. 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 3. 构建管道
# 管道按顺序执行以下步骤:
# - StandardScaler(): 标准化数据(移除均值并缩放到单位方差)
# - LogisticRegression(): 逻辑回归分类器
pipeline = Pipeline([('scaler', StandardScaler()),('logreg', LogisticRegression())
])# 4. 训练模型
pipeline.fit(X_train, y_train)# 5. 预测
y_pred = pipeline.predict(X_test)# 6. 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f"模型在测试集上的准确率: {accuracy:.2f}")
可迭代对象
一个可迭代对象:能够一次返回其成员(元素)的对象,可在一个循环(如 for 循环)中遍历
序列类型:list、tuple`(元组)、str (字符串)、range(范围)
集合类型:set (集合)
字典类型:字典、文件对象 、生成器、迭代器
# 列表 (list)
print("迭代列表:")
my_list = [1, 2, 3, 4, 5]
for item in my_list:print(item)# 元组 (tuple)
print("迭代元组:")
my_tuple = ('a', 'b', 'c')
for item in my_tuple:print(item)# 字符串 (str)
print("迭代字符串:")
my_string = "hello"
for char in my_string:print(char)# range (范围)
print("迭代 range:")
for number in range(5): # 生成 0, 1, 2, 3, 4print(number)# 集合类型 (Set Types)# 集合 (set) - 注意集合是无序的,所以每次迭代的顺序可能不同
print("迭代集合:")
my_set = {3, 1, 4, 1, 5, 9}
for item in my_set:print(item)# 迭代字典的值 (values)
print("迭代字典的值:")
for value in my_dict.values():print(value)# 迭代字典的键值对 (items)
print("迭代字典的键值对:")
for key, value in my_dict.items(): # items方法很好用print(f"Key: {key}, Value: {value}")
OS模块
处理图像数据集、自定义数据加载流程、保存和加载复杂的模型结构时,os 模块非常有用
(一)读取路径
import os
os.getcwd()
为什么不直接复制路径?
假设你直接右键复制了绝对路径 /Users/you/projects/data.csv
,可能会遇到以下问题:
-
换台电脑就失效:在另一台电脑上,路径可能变成
/Users/another/data.csv
。 -
协作时出错:团队成员的文件结构可能不同,硬编码路径会导致代码无法共享。
-
目录变化时维护成本高:如果文件移动到其他位置,需要修改所有相关代码。
(二)获取文件列表
os.listdir() # list directory 获取当前工作目录下的文件列表
import os# 在脚本开头获取当前工作目录
BASE_DIR = os.getcwd()# 构建数据文件路径
data_path = os.path.join(BASE_DIR, "data", "input.csv")
output_path = os.path.join(BASE_DIR, "results", "output.csv")# 使用路径
with open(data_path, "r") as f:data = f.read()# 保存结果
with open(output_path, "w") as f:f.write(data)
使用 r'' 原始字符串,这样就不需要写双反斜杠 \\,因为\会涉及到转义问题
path_a = r'C:\Users\YourUsername\Documents' # r''这个写法是写给python解释器看,他只会读取引号内的内容,不用在意r的存在会不会影响拼接
path_b = 'MyProjectData'
file = 'results.csv'# 使用 os.path.join 将它们安全地拼接起来,os.path.join 会自动使用 Windows 的反斜杠 '\' 作为分隔符
file_path = os.path.join(path_a , path_b, file)file_path
在 Python 中,反斜杠 \
是用来表示转义字符的。例如:
\n
表示换行符\t
表示制表符\"
表示双引号(用于在字符串中包含双引号)
但在 Windows 文件路径 中,路径分隔符是 \
(例如:C:\Users\data.csv
),这就会产生冲突
如果直接在字符串中使用单斜杠 \
,Python 会将其视为转义字符,导致路径解析错误
(三)环境变量方法
# 使用 .items() 方法可以方便地同时获取变量名(键)和变量值,之前已经提过字典的items()方法,可以取出来键和值
# os.environ是可迭代对象for variable_name, value in os.environ.items():# 直接打印出变量名和对应的值print(f"{variable_name}={value}")# 打印总数
print(f"\n--- 总共检测到 {len(os.environ)} 个环境变量 ---")
目录树
C:\
├── Documents
│ ├── report.txt
│ └── project_folder
│ ├── data.csv
│ └── README.md
├── Pictures
│ ├── landscape.jpg
│ └── portrait.png
└── Downloads
常见用途
-
批量处理文件:例如重命名所有图片文件、压缩文件夹等。
-
搜索文件:查找特定类型的文件(如
.csv
、.txt
)。 -
统计目录信息:计算目录大小、文件数量等
遍历数据目录并加载数据
import os
from PIL import Image
import numpy as npdata_dir = "data" # 数据根目录
train_dir = os.path.join(data_dir, "train")
test_dir = os.path.join(data_dir, "test")# 加载训练数据
X_train, y_train = [], []
for class_name in os.listdir(train_dir):class_dir = os.path.join(train_dir, class_name)if os.path.isdir(class_dir): # 确保是目录for img_name in os.listdir(class_dir):img_path = os.path.join(class_dir, img_name)if img_path.endswith(('.jpg', '.jpeg', '.png')):# 加载图像并预处理(示例:转为NumPy数组)img = Image.open(img_path).resize((224, 224))img_array = np.array(img) / 255.0 # 归一化X_train.append(img_array)y_train.append(class_name) # 类别标签# 转换为NumPy数组(用于深度学习模型)
X_train = np.array(X_train)
y_train = np.array(y_train)print(f"训练数据形状: {X_train.shape}")
print(f"训练标签数量: {len(y_train)}")
@浙大疏锦行
相关文章:
PYTHON训练营DAY24
# SO代码我们的感情好像跳楼机 # 元组创建时,可以省略括号:my_tuple4 10, 20, thirty # 字符串要加“ ” 元组 一、创建 my_tuple1 (1, 2, 3) my_tuple2 (a, b, c) my_tuple3 (1, hello, 3.14, [4, 5]) # 可以包含不同类型的元素 print(my_tupl…...
Element UI 双击事件(@cell-dblclick 与 @row-dblclick)
Element UI 双击事件(cell-dblclick 与 row-dblclick) 一、核心双击事件绑定 表格单元格双击 事件绑定: 通过 cell-dblclick 监听单元格双击,接收四个参数(row, column, cell, event)。 示…...
云原生|kubernetes|kubernetes的etcd集群备份策略
简介: 云原生|kubernetes|kubernetes的etcd集群备份策略 前言: etcd作为集群的关键组件之一,还是非常有必要进行定期备份的,本例将会就如何更快更好的备份etcd以及应该有哪些策略做一解析。(二进制部署的etcd集群&…...
永不收费的软件,离线可用
上次在推荐PC端证件照软件时,有小伙伴问是否有安卓端的版本。当时我说有,只是需要测试一下再给大家推荐。 今天就为大家带来一款安卓端的证件照软件,有需要的小伙伴可以赶紧收藏起来! 底色证件照(安卓) 之…...
解锁课程编辑器之独特风姿
(一)强大的编辑功能 课程编辑器的编辑功能堪称一绝,就像是一位全能的艺术大师。在文字编辑方面,它提供了丰富的字体、字号选择,还能对文字进行加粗、倾斜、下划线等格式设置,让重点知识一目了然。比如教师…...
在企业级智能体浪潮中,商业数据分析之王SAS或将王者归来
继LLM大模型与GenAI生成式AI应用之后,智能体正在成为下一个风口。与基于LLM的GenAI应用不同,智能体将LLM的智能涌现能力与智能决策的能力相结合,让智能体不仅能够认知、分析和总结,还能够进行决策和执行决策,将知识与智…...
WPF自定义控件开发全指南:多内容切换与动画集成
WPF自定义控件开发全指南:多内容切换与动画集成 一、控件基础架构设计1.1 选择控件基类1.2 定义关键属性 二、动画系统集成2.1 淡入淡出动画实现2.2 滑动动画实现 三、视觉状态管理四、完整使用示例4.1 XAML声明4.2 动画触发逻辑 五、扩展与优化5.1 性能优化建议5.2…...
二维差分(主要看原数组与差分数组的关系)
#include<stdio.h> #include<windows.h> int main() { int n, m; scanf("%d%d", &n, &m); int d[n 2][n 2]; // 差分数组 int a[n 2][n 2]; // 原数组 // 初始化数组 for (int i 0; i < n 1; i) { for (int j 0; j < n 1; j) { d…...
AI+企业应用级PPT生成(实战)
使用DeepSeek生成PPT框架Kimi PPT助手生成PPT全流程教学 目录 工具简介操作步骤 2.1 DeepSeek生成PPT框架2.2 Kimi PPT助手生成PPT 案例演示注意事项与优化建议扩展应用场景 1. 工具简介 DeepSeek:国内领先的AI大模型,擅长生成结构化文本内容ÿ…...
EXCEL Python 实现绘制柱状线型组合图和树状图(包含数据透视表)
1、组合图、数据透视表 (1)数据预处理 知识点 日期函数 year() month()数据透视表操作 同比计算公式 环比计算公式 (2)excel 数据透视表插入组合图 a.2015~2017数据集处理方式: 操作: 结果 b.2020~20…...
OpenCV的CUDA模块进行图像处理
本文介绍了使用OpenCV和CUDA加速的四种图像处理技术:灰度化、高斯模糊、Sobel边缘检测和直方图均衡化。每种技术都通过将图像数据上传到GPU,利用CUDA进行加速处理,最后将结果下载回CPU。灰度化通过cv::cuda::cvtColor实现,高斯模糊…...
电路研究9.3.5——合宙Air780EP中的AT开发指南:MQTT 应用指南
应用概述 4G 模块支持 MQTT 和 MQTT SSl 协议, MQTT 应用的基本流程如下: 1、如果要支持 SSL ,配置 SSL 参数 2、通过 TCP 连接到 MQTT 服务器 3、发送 MQTT CONNECT 到服务器,打开会话连接 4、订阅或者发布消息…...
每日算法刷题计划Day5 5.13:leetcode数组3道题,用时1h
11. 26. 删除有序数组中的重复项(简单,双指针) 26. 删除有序数组中的重复项 - 力扣(LeetCode) 思想: 1.我的思想: 双指针遍历集合储存已有元素 2.官方思想: 题目条件有序数组删除重复元素,所以重复元素都是连续存在…...
常见排序算法及复杂度分析
冒泡排序 (Bubble Sort) 基本思想 相邻元素比较,大的元素后移 每轮将最大元素"冒泡"到末尾 代码实现 void bubbleSort(int arr[], int n) {for (int i 0; i < n-1; i) {for (int j 0; j < n-i-1; j) {if (arr[j] > arr[j1]) {swap(arr[j]…...
git 怎么更改本地的存储的密码
目录 找到控制面板---用户账户---凭证管理器 点击【windows凭据】,选择普通凭据,点击你要修改的地址。点击【编辑】 修改完,点击【保存】编辑 找到控制面板---用户账户---凭证管理器 点击【windows凭据】,选择普通凭据&#x…...
数据分析预备篇---Pandas的Series
Pandas优势 Pandas优势在于它是构建在NumPy之上的,继承了NumPy高性能的数组计算功能,同时还提供了更多复杂精细的数据处理功能(如缺失值处理、时间序列分析),支持表格型数据(DataFrame)和带标签的一维数据(Series) 安装Pandas Windows操作系统,在菜单栏搜索cmd,进入…...
Kaamel隐私合规洞察:Facebook美容定向广告事件分析
Kaamel隐私合规与数据安全团队分析报告 I. 引言:基于情绪的定向广告指控 A. 事件概述 近期,一则关于Meta(前身为Facebook)的指控引发了公众对数字隐私和广告伦理的广泛关注。该指控核心内容为,Meta公司涉嫌利用其平台…...
最优化方法Python计算:有约束优化应用——线性可分问题支持向量机
设问题的数据样本点 ( x i , y i ) (\boldsymbol{x}_i,y_i) (xi,yi), x i ∈ R n \boldsymbol{x}_i\in\text{R}^n xi∈Rn, y i 1 y_i\pm1 yi1, i 1 , 2 , ⋯ , m i1,2,\cdots,m i1,2,⋯,m。由于标签数据 y i ∈ { − 1 , 1 } y_i\…...
深入解析 I/O 模型:原理、区别与 Java 实践
一、I/O 模型的核心概念 I/O 操作的本质是数据在用户空间(应用程序内存)和内核空间(操作系统内核内存)之间的传输。根据数据准备与拷贝阶段的处理方式不同,I/O 模型可分为以下五类: 阻塞 I/O(…...
React系列——HOC高阶组件的封装与使用
技巧一:复用组件逻辑 具体而言,高阶组件是参数为组件,返回值为新组件的函数 const EnhancedComponent higherOrderComponent(WrappedComponent);For example: 参数复用 const withSize (Component) > {return class toSize extends C…...
72.编辑距离
编辑距离是指通过删除、插入和替换三种操作,将一个字符串转换为另一个字符串所需的最少操作次数。 首先定义状态:dp[i][j] 表示将 word1 的前 i 个字符转换为 word2 的前 j 个字符所需的最少操作数。接下来定义状态转移方程: 如果 word1[i]…...
自适应稀疏核卷积网络:一种高效灵活的图像处理方案
自适应稀疏核卷积网络:一种高效灵活的图像处理方案 引言 在深度学习的大潮中,计算机视觉技术取得了长足的进步。其中,卷积神经网络(CNN)作为图像处理的核心工具,极大地推动了各类图像识别任务的效果提升。…...
c# UTC 时间赋值注意事项
文章目录 最佳实践:赋值时指定时区问题描述回答关键区别:DateTime.SpecifyKind 的作用1. 直接赋值 DateTime.UtcNow.Date2. 使用 DateTime.SpecifyKind 强制指定 最佳实践:赋值时指定时区 避免 C# 版本默认读取时采用 机器时区问题 如果需要UTC 时间…...
对端服务器重装系统之后远程SSH无法登录的问题
今天遇到一个SSH连接问题特此记录下。 我之前可以从本机使用SSH跳转到其他服务器,今天突然发现无法跳转了,有警告信息,此报错是由于远程的主机的公钥发生了变化导致的,可能是有异常,建议修改认证文件后再次登录。 突然…...
豌豆 760 收录泛滥现象深度解析与应对策略
xinruanj 一、收录泛滥现象的具体表现 当用户在豌豆760 中搜索某类应用时,往往会被数量庞大、功能相似的程序所包围。以图片编辑类应用为例,搜索结果中可能会出现数十款名称相近、图标相似的应用。这些应用不仅在界面设计上缺乏创新,甚至部…...
dockers笔记
docker 和 虚拟机的区别 虚拟机比较笨重,包括操作系统 虚拟化:将物理资源虚拟为逻辑资源 镜像 - 模板 容器 - 实例 docker hub - 分享 和 复用 容器化和dockerfile dockerfile实践 我们想打印一个js语句,如何构建镜像完成这个事情 新建了…...
Angular | 利用 `ChangeDetectorRef` 解决 Angular 动态显示输入框的聚焦问题
在 Angular 应用开发中,实现用户点击按钮后,原地切换显示一个输入框并自动获取焦点的功能,是一个常见的交互模式。例如,搜索图标点击后变为搜索框,用户可以直接输入。然而,由于 Angular 的变更检测和 DOM 更…...
Redis——数据结构
Redis的五种基本数据类型:String、Hash、List、Set、ZSet 结构类型结构存储值结构读写能力String字符串、整数或浮点数对整个字符串或字符串的一部分进行操作;对整数或者浮点数进行自增或自减操作List链表,每个节点上包含一个字符串对链表两…...
通讯录管理系统(IO_序列化和反序列化版)
参照之前文章,也是IO的变版 package day4;import java.io.Serializable;/* 有需求 -- 才去设计类 自定义表示通讯录单条信息的类*/ public class PhoneBookItem implements Serializable {private static final long serialVersionUID 1L;//属性private String na…...
基于RT-Thread的STM32F4开发第三讲——DAC
文章目录 前言一、DAC是什么?二、RT-Thread工程创建三、DAC函数编写1.DAC.c2.DAC.h3.main.c 四、结果测试五、工程分享 前言 本章利用RT-Thread最新的驱动5.1.0开发DAC模块,使用的开发板是正点原子的STM32F4探索者。很多配置和上文重复,本文…...
git cherry-pick和git stash命令详解
git cherry-pick命令 定义 用于将指定的提交(commit)从一个分支"挑选"并应用到当前分支它复制某个提交的更改(diff),生成一个新的提交,保留原提交的更改内容,但拥有新的提交ID(SHA值)…...
MapReduce基本介绍
核心思想 分而治之:将大规模的数据处理任务分解成多个可以并行处理的子任务,然后将这些子任务分配到不同的计算节点上进行处理,最后将各个子任务的处理结果合并起来,得到最终的结果。 工作流程 Map 阶段: 输入数据被…...
正则表达式常用验证(一)
正则表达式(Regular Expression)是一种强大的文本匹配工具,常用于验证字符串的格式。以下是常见的正则表达式验证场景及其对应的表达式: 1. 数字验证 验证纯数字: ^\d+$示例:123、456789 验证固定长度的数字(如 6 位): ^\d{6}$示例:123456 验证数字范围(如 1 到 100…...
基于几何布朗运动的股价预测模型构建与分析
基于几何布朗运动的股价预测模型构建与分析 摘要 本文建立基于几何布朗运动的股价预测模型,结合极大似然估计与蒙特卡洛模拟,推导股价条件概率密度函数并构建动态预测区间。实证分析显示模型在标普500指数预测中取得89%的覆盖概率,波动率估…...
通过SSRF击穿内网!kali-ssrf靶场实战!
目录 1. 靶场拓扑图 2. 判断SSRF的存在 3. SSRF获取本地信息 3.1. SSRF常用协议 3.2. 使用file协议 4. 172.150.23.1/24探测端口 5. 172.150.23.22 - 代码注入 6. 172.150.23.23 SQL注入 7. 172.150.23.24 命令执行 7.1. 实验步骤 8. 172.150.23.27:6379 Redis未授权…...
Yarn-概述
一、YARN 是什么? YARN(Yet Another Resource Negotiator) 是 Apache Hadoop 生态系统中的核心组件,是一个 分布式资源管理和作业调度系统,主要用于协调集群中的计算资源(CPU、内存、磁盘、网络等…...
如何在sheel中运行spark
// 读取文件,得到RDD val rdd1 sc.textFile("hdfs://hadoop100:8020/wcinput/words.txt") // 将单词进行切割,得到一个存储全部单词的RDD val rdd2 fileRDD.flatMap(line > line.split(" ")) // 将单词转换为元组对象࿰…...
销售具备的能力有哪些
销售人员是许多公司业务的开拓者,他们的存在让公司的利益更高。因此,在许多的公司中,销售人员的待遇都非常的高。也因此,有的人看重销售人员的薪资待遇想寻找销售型的工作。但是,相当销售人员还需要具有一定的工作能力…...
React面试常问问题详解
以下是30个React面试中常见的问题及简要解析,涵盖基础概念、核心原理、性能优化、Hooks、状态管理等方面,适用于初中高级开发者准备面试时参考: 一、React 基础与核心概念 React 是什么? React 是由 Facebook 开发的用于构建用户界…...
POM 和关键字驱动区别
一、POM 和关键字驱动的区别以及各自的优势分别是什么? 1、POM 适用于对单个系统封装的自动化框架中,对业务覆盖更精准; 优势:更加便利、维护性更高 2、关键字驱动可以用于对多个业务、多个系统进行封装的自动化框架中&…...
2025年PMP 学习十一 第8章 项目质量管理(8.3)
第8章 项目质量管理(8.3) 文章目录 第8章 项目质量管理(8.3)8.3 控制质量1. 定义与作用2.输入、输出,工具和技术3. 数据收集 - 核查表(工具与技术)4. 数据展示 - 帕雷托图(工具与技术…...
【笔记】C++操作mysql及相关配置
目录 使用软件版本信息: 1. C配置mysql相关依赖 1.1 下载 1.2 文件配置 1.3 C编译器配置 2、测试程序 使用软件版本信息: Visual Studio 2022Mysql 8.0C Connector库 8.3.0 可直接在https://download.csdn.net/download/Word_And_Me_/90826524下…...
【MapReduce入门】深度解析MapReduce:定义、核心特点、优缺点及适用场景
目录 1 什么是MapReduce? 2 MapReduce的核心特点 2.1 分布式处理 2.2 容错机制 3 MapReduce的完整工作流程 4 MapReduce的优缺点分析 4.1 优势 4.2 局限性 5 MapReduce典型应用场景 5.1 适用场景 5.2 不适用场景 6 MapReduce与其他技术的对比 7 总结 1…...
EMQX v5.0通过连接器和规则同步数据
1 概述 EMQX数据集成功能,帮助用户将所有的业务数据无需额外编写代码即可快速完成处理与分发。 数据集成能力由连接器和规则两部分组成,用户可以使用数据桥接或 MQTT 主题来接入数据,使用规则处理数据后,再通过数据桥接将数据发…...
JCJC 错别字检测自定义词典 API 接口文档 2025-05-13
JCJC 错别字检测自定义词典 API 接口文档 2025-05-13 JCJC 错别字检测系统自定义词典接口全面开放。企业用户和个人付费用户都可以使用接口方式管理自定义词典。 自定义词典包含: 白名单和黑名单两种类型。 也可以登录个人中心,点击左侧边栏导航以 UI …...
Qt 样式表qss学习
语法 /* 语法结构 */ selector { attribute: value }selector(选择器) selector(选择器):指定要应用样式的控件类型或特定控件。例如: QWidget:所有QWidget及其子类。QPushButton:…...
Linux文件编程——读写结构体、链表等其他类型的数据
在 Linux 文件编程中, open、read、write、close等函数,本质上的读写内容是一个无类型的指针,所以其也可以读写整型、数组、结构体、链表等不同类型的数据。 SYNOPSIS #include <unistd.h>ssize_t write(int fd, const void *buf, siz…...
离散制造企业WMS+MES+QMS+条码管理系统高保真原型全解析
在离散型制造企业的生产过程中,库存管理混乱、生产进度不透明、质检流程繁琐等问题常常成为制约企业发展的瓶颈。为了帮助企业实现全流程数字化管控,我们精心打造了一款基于离散型制造企业(涵盖单件生产、批量生产、混合生产模式)…...
Datawhale PyPOTS时间序列5月第1次笔记
课程原地址: https://github.com/WenjieDu/PyPOTS(Package地址) https://github.com/WenjieDu/BrewPOTS/tree/datawhale/202505_datawhale(Tutorial地址) 2.1 PyPOTS简介 PyPOTS 是一个专为处理部分观测时间序列&a…...
linux 抓包工具tcpdump使用小记(使用时注意权限和系统资源)
tcpdump 是一款强大的网络数据包捕获和分析工具,常用于网络故障排查、协议分析、安全审计等场景。以下是其核心功能、使用方法及常见场景的详细介绍: 1. 基本功能 数据包捕获:监听网络接口,实时捕获传输的数据包。过滤规则&#…...