深入详解人工智能机器学习:强化学习
目录
强化学习概述
强化学习的基本概念
定义
关键组件
强化学习过程
常用算法
应用示例
示例代码
代码解释
应用场景
强化学习核心概念和底层原理
核心概念
底层原理
总结
强化学习概述
强化学习(Reinforcement Learning, RL)是机器学习中的一个重要领域,其核心目标是通过与环境的交互学习如何采取行动以最大化累积奖励。与监督学习不同的是,强化学习不依赖于给定的输入输出对,而是通过试探和反馈不断改进决策策略。
强化学习的基本概念
定义
强化学习是一种机器学习方法,其中智能体(Agent)在一个环境(Environment)中采取某种行为(Action),根据行为的结果获取奖励(Reward),通过不断试错以找到最佳的行为策略(Policy)。
关键组件
1. **智能体(Agent)**:负责执行动作的实体。
2. **环境(Environment)**:智能体与之交互的空间。
3. **状态(State)**:环境在某一时刻的具体情况。
4. **动作(Action)**:智能体在某状态下可以执行的操作。
5. **奖励(Reward)**:智能体执行动作后从环境中获得的反馈。
6. **策略(Policy)**:智能体在给定状态下选择动作的规则。
7. **值函数(Value Function)**:用于估计某一状态或状态动作对的长期收益。
强化学习过程
1. **初始化**:设置智能体和环境,定义状态空间和动作空间。
2. **交互**:智能体选择一个动作执行,环境返回新的状态和奖励。
3. **策略更新**:根据获得的奖励更新策略,以便未来获得更高的奖励。
4. **迭代**:不断重复交互和策略更新直至智能体表现收敛。
常用算法
- **Q-Learning**:一种无模型强化学习方法,使用Q值函数来更新策略。
- **深度Q网络(DQN)**:结合神经网络的Q-Learning,用于处理高维状态空间。
- **策略梯度方法(Policy Gradient)**:直接优化策略的参数化表示。
应用示例
- **游戏AI**:如AlphaGo在围棋中的应用,通过自我对弈学习策略。
- **自动驾驶**:学习根据环境做出驾驶决策。
- **机器人控制**:优化机器人的运动路径以执行任务。
示例代码
以下是一个简单的Q-Learning算法示例,用于解决经典的CartPole问题:
import gym
import numpy as np# 创建环境
env = gym.make('CartPole-v1')# 初始化Q表
num_states = (env.observation_space.high - env.observation_space.low) * np.array([10, 10, 50, 50])
num_states = np.round(num_states, 0).astype(int) + 1
q_table = np.random.uniform(low=-1, high=1, size=(num_states[0], num_states[1], num_states[2], num_states[3], env.action_space.n))# 离散化状态
def discretize_state(state):state_adj = (state - env.observation_space.low) * np.array([10, 10, 50, 50])return np.round(state_adj, 0).astype(int)# Q-Learning参数
alpha = 0.1 # 学习率
gamma = 0.99 # 折扣因子
epsilon = 1.0 # 探索率
epsilon_decay = 0.995
min_epsilon = 0.01
episodes = 1000# 训练
for episode in range(episodes):state = discretize_state(env.reset())done = Falsewhile not done:# 选择动作if np.random.rand() < epsilon:action = env.action_space.sample()else:action = np.argmax(q_table[state[0], state[1], state[2], state[3]])# 执行动作next_state_raw, reward, done, _ = env.step(action)next_state = discretize_state(next_state_raw)# 更新Q表q_table[state[0], state[1], state[2], state[3], action] = (1 - alpha) * q_table[state[0], state[1], state[2], state[3], action] + alpha * (reward + gamma * np.max(q_table[next_state[0], next_state[1], next_state[2], next_state[3]]))state = next_state# 更新探索率if epsilon > min_epsilon:epsilon *= epsilon_decayenv.close()
代码解释
- **环境创建**:使用OpenAI Gym创建CartPole环境。
- **状态离散化**:将连续状态转换为离散状态以便于Q表更新。
- **Q表初始化**:随机初始化Q表用于策略更新。
- **动作选择**:使用ε-贪心策略平衡探索和利用。
- **Q表更新**:根据经验更新Q值,调整策略。
- **探索率衰减**:逐渐减少探索以便更好地利用学习到的策略。
应用场景
1. **推荐系统**:基于用户反馈调整推荐策略。
2. **能源管理**:优化电网调度以降低成本和减少负载。
3. **金融交易**:优化交易策略以最大化收益。
强化学习在动态和复杂环境中展现出强大的适应能力,适用于需要长期优化的决策过程。随着算法和计算能力的不断发展,强化学习将在更多实际应用中展现其潜力。
强化学习核心概念和底层原理
强化学习是机器学习的三大分支之一,其核心在于智能体(Agent)通过与环境(Environment)的交互来学习如何完成任务。强化学习问题通常可以通过马克夫决策过程(MDP)来建模,主要包括以下几个核心概念和底层原理:
核心概念
1. **智能体(Agent)**:
- 在环境中进行操作以达到某个目标的实体。智能体通过学习策略来决定在每个状态下采取什么动作。
2. **环境(Environment)**:
- 智能体与之交互的世界。环境接受智能体的动作并反馈新的状态和奖励。
3. **状态(State)**:
- 环境在某一时刻所处的具体情况,通常用一组变量描述,是智能体决策的基础。
4. **动作(Action)**:
- 智能体在某个状态下可以采取的操作。动作的选择会影响环境的状态。
5. **奖励(Reward)**:
- 即时反馈信号,用于评价智能体采取的动作的好坏。奖励的目标是最大化累计收益。
6. **策略(Policy)**:
- 智能体在每个状态下采取动作的规则或分布,通常记为π(a|s),表示在状态s下执行动作a的概率。
7. **值函数(Value Function)**:
- 衡量某个状态或状态动作对的长期收益。主要包括:
- **状态值函数 V(s)**:在状态s下开始,遵循某种策略所能获得的期望总奖励。
- **动作值函数 Q(s, a)**:在状态s下执行动作a,然后遵循某种策略所能获得的期望总奖励。
8. **折扣因子(Gamma, γ)**:
- 用于平衡当前奖励和未来奖励的重要性,取值范围在[0, 1]。γ越接近1,未来奖励的重要性越大。
底层原理
1. **探索与利用(Exploration vs. Exploitation)**:
- 在学习过程中,智能体需要平衡探索未知的动作以发现更好的策略和利用已知的最佳策略。常用策略包括ε-贪心策略。
2. **贝尔曼方程(Bellman Equation)**:
- 描述了值函数的递归性质,是动态规划的核心。贝尔曼方程用于计算状态值和动作值的期望。
- **状态值函数的贝尔曼方程**:
\[
V(s) = \sum_a \pi(a|s) \sum_{s'} P(s'|s, a) [R(s, a, s') + \gamma V(s')]
\]
- **动作值函数的贝尔曼方程**:
\[
Q(s, a) = \sum_{s'} P(s'|s, a) [R(s, a, s') + \gamma \max_{a'} Q(s', a')]
\]
其中,\(P(s'|s, a)\)是从状态s经过动作a转移到状态s'的概率,\(R(s, a, s')\)是所获得的奖励。
3. **策略评估与策略改进**:
- **策略评估**:计算一个给定策略的值函数。
- **策略改进**:通过值函数提升策略,常用贪心策略以实现策略改进。
4. **重要算法**:
- **动态规划(Dynamic Programming, DP)**:需要已知环境的模型,对小规模问题进行精确求解。
- **蒙特卡洛方法(Monte Carlo Methods)**:通过采样来估计值函数,适用于策略评估和策略改进。
- **时序差分学习(Temporal-Difference Learning, TD)**:结合了动态规划的引导和蒙特卡洛方法的采样优点,主要包括SARSA和Q-Learning。
5. **深度强化学习**:
- 使用神经网络逼近值函数,以应对高维状态空间的问题,如深度Q网络(DQN)、策略梯度方法和Actor-Critic方法。
总结
强化学习的原理旨在通过不断的试探和经验总结,优化智能体的决策能力,使其能够在复杂和动态的环境中实现目标。随着算法的进步和计算资源的增加,强化学习在实际应用中的表现越来越显著。
相关文章:
深入详解人工智能机器学习:强化学习
目录 强化学习概述 强化学习的基本概念 定义 关键组件 强化学习过程 常用算法 应用示例 示例代码 代码解释 应用场景 强化学习核心概念和底层原理 核心概念 底层原理 总结 强化学习概述 强化学习(Reinforcement Learning, RL)是机器学习中的…...
docker的简单使用
文章目录 docker简介docker架构镜像和容器镜像有关的常用命令容器相关常用命令 docker简介 Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。 Docker可以让开方子打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到…...
启动的docker容器里默认运行dockerd
问题 已在Dockerfile里yum install docker 但docker run 启动容器后, docker ps等命令无法执行 ps -aux 没有dockerd 进程 临时解决 另开一个终端 docker exec -it 容器名 bash 手动启 dockerd 默认启动 分析 现在启动容器的默认命令是 /sbin/init sbin/init 是根文件系统…...
Python爬虫技术的最新发展
在互联网的海洋中,数据就像是一颗颗珍珠,而爬虫技术就是我们手中的潜水艇。2024年,爬虫技术有了哪些新花样?让我们一起潜入这个话题,看看最新的发展和趋势。 1. 异步爬虫:速度与激情 随着现代Web应用的复…...
什么是厄尔米特(Hermitian)矩阵?
厄米矩阵(Hermitian Matrix)定义 在数学和物理中,厄米矩阵是满足以下条件的复方阵: A A † \mathbf{A}\mathbf{A}^\dagger AA† 其中, A † \mathbf{A}^\dagger A†表示矩阵 A \mathbf{A} A的共轭转置,即…...
从零开始:Linux 环境下的 C/C++ 编译教程
个人主页:chian-ocean 文章专栏 前言: GCC(GNU Compiler Collection)是一个功能强大的编译器集合,支持多种语言,包括 C 和 C。其中 gcc 用于 C 语言编译,g 专用于 C 编译。 Linux GCC or G的安…...
Excel + Notepad + CMD 命令行批量修改文件名
注意:该方式为直接修改原文件的文件名,不会生成新文件 新建Excel文件 A列:固定为 renB列:原文件名称C列:修改后保存的名称B列、C列,需要带文件后缀,为txt文件就是.txt结尾,为png图片…...
1.1 android:监听并处理返回事件
在Android开发过程中,默认执行返回事件是结束当前界面,返回上一个界面,没有任何提示,但用户可能会误操作,这时出现一个提示界面对用户较为友好,接下来,让我们探究返回事件的处理。 一、onBackP…...
解决Ubuntu关机主板不断电的问题(其它使用GRUB的Linux发行版大概率也可用)
前言: 在某些主板上,Ubuntu20.04系统关机并不会连带主板一起断电。 猜测可能是主板太老了。无法识别较新的系统的关机信号,导致无法断电。连带着一些电脑周边设备也不会断电导致状态无法重置,后续会出现一些问题。 目标…...
【CTF-Web】文件上传漏洞学习笔记(ctfshow题目)
文件上传 文章目录 文件上传 What is Upload-File?Upload-File In CTF Web151 考点:前端校验解题: Web152 考点:后端校验要严密解题: Web153 考点:后端校验 配置文件介绍解题: Web154 考点&am…...
无法正常启动此程序,因为计算机丢失wlanapi.dll
wlanapi.dll丢失怎么办?有没有什么靠谱的修复wlanapi.dll方法_无法启动此程序,因为计算机中丢失wlanapi.dll-CSDN博客 wlanapi.dll是 Windows 操作系统中的一个动态链接库文件,主要与 Windows 无线 LAN (WLAN) API 相关。该DLL提供了许多必要的函数&…...
C++ webrtc开发(非原生开发,linux上使用libdatachannel库)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、libdatachannel库的下载和build二、开始使用 1.2.引入库3.开始使用 总结 前言 使用c开发webrtc在互联网上留下的资料甚少,经过我一段时间的探…...
vue-router路由传参的两种方式(params 和 query )
一、vue-router路由传参问题 1、概念: A、vue 路由传参的使用场景一般应用在父路由跳转到子路由时,携带参数跳转。 B、传参方式可划分为 params 传参和 query 传参; C、而 params 传参又可分为在 url 中显示参数和不显示参数两种方式&#x…...
VBA高级应用30例应用在Excel中的ListObject对象:向表中添加注释
《VBA高级应用30例》(版权10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以…...
github操作学习笔记(杂乱版)
git开源的分布式版本控制系统: 每次修改文件提交后,都会自动创建一个项目版本 查看git版本看有没有安装成功:git --version 把默认编辑器设置成vim:git config --global core.editor "vim" 1、设置昵称和邮箱ÿ…...
TaskBuilder SQL执行工具
为了方便开发者连接当前任擎服务器上配置的各个数据源对应的数据库进行相关操作,TaskBuilder提供了一个SQL执行工具,点击系统侧边栏里的执行SQL图标 ,即可打开该工具,界面如下图所示: 该工具从上至下分为三个区域&a…...
快速掌握Quartz.Net计划任务调度框架,轻松实现定时任务
前言 Quartz.Net是一个开源的作业调度框架,可以用于管理计划任务和定期执行。Quartz.Net提供了丰富的作业计划选项,例如精确或模糊时间表达式、日期和时间限制等。Quartz.Net采用分布式架构,允许在多个计算机上运行任务。 Quartz.Net架构设…...
Linux ufw命令丨Linux网络防火墙ufw命令详解
ufw(Uncomplicated Firewall)是Ubuntu系统上默认的防火墙组件,它为轻量化配置iptables而开发,提供了一个非常友好的界面用于创建基于IPv4和IPv6的防火墙规则 ufw在Ubuntu 8.04 LTS后的所有发行版中默认可用,它通过命令…...
shell编程(完结)
shell编程(完结) 声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章 笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其…...
深入了解Text2SQL开源项目(Chat2DB、SQL Chat 、Wren AI 、Vanna)
深入了解Text2SQL开源项目(Chat2DB、SQL Chat 、Wren AI 、Vanna) 前言1.Chat2DB2.SQL Chat3.Wren AI4.Vanna 前言 在数据驱动决策的时代,将自然语言查询转化为结构化查询语言(SQL)的能力变得日益重要。无论是小型创业…...
【Linux】报错:cannot create directory ‘test’: Read-only file system
1 报错 ❤️在使用mkdir test命令创建文件夹的时候,报错如下: mkdir:cannot create directory ‘test’:Read-only file system 2 解决方法 mount -o remount,rw / 🦋上述命令在Linux系统中用于重新挂载(root)文件系统,并将其从只读模式切换到读写模式。 ■ 下面是对…...
python mat是什么文件
.mat就是matlab的文件格式,一般用于matlab和python间的数据传输,python中numpy和scipy提供了一些函数,可以很好的对.mat文件的数据进行读写和处理。 在python中可以使用scipy.io中的函数loadmat()读取mat文件,函数savemat保存文…...
Redis: 一个高效的内存数据存储解决方案
Redis: 一个高效的内存数据存储解决方案 介绍 Redis(Remote Dictionary Server)是一种开源的高性能键值存储系统。它常被用作缓存、消息队列、会话存储、实时数据分析等多种场景。与传统的关系型数据库不同,Redis 是基于内存的数据存储&…...
AR眼镜_消费级工业AR智能眼镜主板硬件解决方案
AR眼镜的研发是一项复杂的软硬件集成工程,它需要在摄影、音频、交互和连接等多个方面提供卓越的基础体验,因此产品的每个细节都显得尤为重要。 在设计AR眼镜时,重量、体积和散热性能都是必须认真考量的关键因素。在芯片平台的选择上ÿ…...
C# 异常处理
C# 异常处理 异常处理是编程中不可或缺的一部分,它允许程序在遇到错误或意外情况时优雅地处理这些问题,而不是直接崩溃。C# 提供了一套强大的异常处理机制,包括 try-catch 块、finally 块和 throw 语句。本文将深入探讨 C# 中的异常处理,包括如何捕获和处理异常,以及如何…...
图解SSH原理
1. 初见SSH SSH是一种协议标准,其目的是实现安全远程登录以及其它安全网络服务。 SSH仅仅是一协议标准,其具体的实现有很多,既有开源实现的OpenSSH,也有商业实现方案。使用范围最广泛的当然是开源实现OpenSSH。 2. SSH工作原理 …...
如何快速批量把 PDF 转为 JPG 或其它常见图像格式?
在某些特定场景下,将 PDF 转换为 JPG 图片格式却具有不可忽视的优势。例如,当我们需要在不支持 PDF 查看的设备或软件中展示文档内容时,JPG 图片能够轻松被识别和打开;此外,对于一些网络分享或社交媒体发布的需求&…...
在CentOS中安装和卸载mysql
在CentOS7中安装和卸载mysql 卸载mysql1、查看是否安装过mysql2、查看mysql服务状态3、关闭mysql服务4、卸载mysql相关的rpm程序5、删除mysql相关的文件6、删除mysql的配置文件my.cnf 安装mysql1、下载mysql相关的rpm程序2、检查/tmp临时目录权限3、安装mysql前的依赖检查3、安…...
第十二章:异常(2)
六、自定义异常类 1. 定义一个类继承 异常类 (1) 定义异常类如果为运行时异常,则需要继承 RuntimeException class CheckedPasswordException extends RuntimeException{} (2) 定义异常类如果为非运行时异常,则需要继承 Exception class CheckedPass…...
DAY5 C++运算符重载
1.类实现> 、<、!、||、!和后自增、前自减、后自减运算符的重载 代码: #include <iostream>using namespace std; class Complex {int rel;int vir; public:Complex(){};Complex(int rel,int vir):rel(rel),vir(vir){cout << "…...
Qt之点击鼠标右键创建菜单栏使用(六)
Qt开发 系列文章 - menu(六) 目录 前言 一、示例演示 二、菜单栏 1.MenuBar 2.Menu 总结 前言 QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menubar)、多个工具栏(toolbars)、一个状态栏(status…...
Ant Design Pro实战--day01
下载nvm https://nvm.uihtm.com/nvm-1.1.12-setup.zip 下载node.js 16.16.0 //非此版本会报错 nvm install 16.16.0 安装Ant Design pro //安装脚手架 npm i ant-design/pro-cli -g //下载项目 pro create myapp //选择版本 simple 安装依赖 npm install 启动umi yarn add u…...
ejb组件(rmi) webservice平台(xml)
springboot bean 在 Spring Boot 中,Bean 是 Spring 框架的核心概念之一,表示由 Spring 容器管理的对象。通过 Bean 或其他注解(如 Component、Service、Repository 等)来定义和管理这些对象。以下是关于 Spring Boot 中 Bean 的…...
[高考] 学习数学的难点
最近想看一些机器学习的书,发现很多概念,很多符号,很多地方是,不知道具体的意思,不懂其中的内涵,所以需要再重新查阅很多的资料,去理解作者每句话是什么意思。 总结一下难点。以詹姆斯-斯图尔特…...
西门子200 smart PLC助力水处理企业自动化改造
摘要 西门子的200SMART PLC,以其强大的功能和灵活的应用性,正成为环保行业中不可或缺的一环。今天,我们就来看看这个小小的PLC是如何在处理环保问题中大显身手的。 不得不说,环保行业的痛点可不少。 比如污水处理,传…...
redis 怎么样查看list
在 Redis 中,可以通过以下方法查看列表的内容或属性: 1. 查看列表中的所有元素 使用 LRANGE 命令: LRANGE key start endkey 是列表的名称。start 是起始索引,0 表示第一个元素。end 是结束索引,-1 表示最后一个元素…...
QT数据库(二):QSqlQueryModel实现数据查询
QSqlQueryModel 可以设置任意的 SELECT 语句来从数据库中查询数据,可以查询一个数据表部分字段的数据,也可以是多个数据表组合的数据。该模型的数据是只读的,即使在界面上修改了QSqlQueryModel 模型的数据,也不能将所做的修改提交…...
【后端面试总结】HTTPS工作原理详解
引言 在现代网络通信中,数据的安全性至关重要。HTTP(Hypertext Transfer Protocol)作为互联网上传输数据的协议,虽然应用广泛,但其数据以明文形式传输,存在被窃取和篡改的风险。为此,HTTPS&…...
Kibana 部署
Kibana 是一个开源的数据可视化和探索工具,主要用于 Elasticsearch 数据的分析和展示。本文将详细介绍如何在 Linux 系统上部署 Kibana,并启用 SSL 加密以确保安全通信。 英文文档:Kibana Guide | Elastic 中文文档:Kibana 用户…...
PostgreSQL 入门
下载与安装 部分国产数据库采用PostgreSQL作为基础进行研发,因此先尝试了解一下原始数据库情况。 PostgreSQL 简称 PG 官网:https://www.postgresql.org/ PostgreSQL “世界上最先进的开源关系型数据库” 这是官网上的口号。 PostgreSQL: The World…...
简单的多网卡选择指定网卡ip注册
简单的多网卡选择指定网卡ip注册 我们公司服务器上面有多个网卡,多网卡则本地ip有多个ip,我们启动服务的时候需要选定他特定的ip,我们服务需要特定的ip进行注册,才能进行正常的通讯功能,我们需要使用如下配置进行特定ip选择&…...
【论文阅读笔记】One Diffusion to Generate Them All
One Diffusion to Generate Them All 介绍理解 引言二、相关工作三、方法预备知识训练推理实现细节训练细节 数据集构建实验分结论附录 介绍 Paper:https://arxiv.org/abs/2411.16318 Code:https://github.com/lehduong/onediffusion Authors࿱…...
基于Spring Boot的电影院订票信息管理系统
目录 前言 一、技术栈 二、系统功能介绍 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 当今社会已经步入了科学技术进步和经济社会快速发展的新时期,国际信息和学术交流也不断加强,计算机技术对经济社会发展和人民生活改善的影响也…...
Easy-Mock前端+后端全解以及详细使用
前文 常见的mock方式 将模拟数据直接写在代码里利用 JavaScript 拦截请求利用 Charles、 Fiddler 等代理工具拦截请求 把模拟的数据写代码里,那是不是每次修改返回数据就要重新部署服务,那有没有不用部署也能改返回参数的东西呢?有&#x…...
【WSL】——wsl安装多个ubuntu
原因:一个库用了GLIBC_2.29,但是我的系统是ubuntu18.04,看样子需要升级glibc,但是升级之后好像会出现崩溃的问题。参考:ubuntu慎重升级glibc。所以那就再安装一个ubuntu22.04吧。 下面介绍通过wsl安装ubuntu18.04&…...
微信小程序从后端获取的图片,展示的时候上下没有完全拼接,有缝隙【已解决】
文章目录 1、index.wxml2、index.js3、detail.detail为什么 .rich-text-style 样式可以生效?1. <rich-text> 组件的特殊性2. 类选择器的作用范围3. 样式优先级4. line-height: 0 的作用5. 为什么直接使用 rich-text 选择器无效? 总结 上下两张图片…...
人工智能大模型LLM开源资源汇总(持续更新)
说明 目前是大范围整理阶段,所以存在大量机翻说明,后续会逐渐补充和完善资料,减少机翻并增加说明。 Github上的汇总资源(大部分英文) awesome-production-machine-learning 此存储库包含一系列精选的优秀开源库&am…...
第二十六章 Spring之假如让你来写事务——初稿篇
Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…...
介绍一下CSS中伪类和伪元素的概念
一、伪类(Pseudo - Classes) 1. 定义 伪类是添加到选择器的关键字,用于定义元素的特殊状态。这些状态不是由文档树中的结构或属性来表示,而是基于用户行为(如鼠标悬停)、元素状态(如被选中&am…...
Python字符串常用操作
Python字符串常用操作 一、字符串的切片 1.1、通过下标及下标范围取值 my_str myNameIsTaichi value1 my_str[2] # 正向 N value2 my_str[-5] # 反向 从 -1 开始 a字符串分割,语法:string[end: step] start:头下标,以0开…...