Day33:字符串的切片
在 Python 中,**切片(Slicing)**是对字符串(以及其他序列类型,如列表、元组等)进行提取部分内容的强大工具。通过切片,你可以非常方便地提取字符串的子字符串、倒序字符串,甚至进行步长控制。
切片操作的语法非常简单,但是它提供了灵活多样的操作方式,是字符串处理中非常常见的技术。
1. 字符串切片的基本语法
字符串切片的基本语法如下:
string[start:end:step]
start
:起始索引,切片开始的位置(包括此位置)。如果省略,默认为0
。end
:结束索引,切片结束的位置(不包括此位置)。如果省略,默认为字符串的末尾。step
:步长,表示切片时的间隔(默认为 1)。如果是负数,则表示从后往前取。
示例:基本切片操作
s = "Hello, World!"
result = s[0:5] # 从索引 0 到索引 5 之间的字符(不包括 5)
print(result) # 输出 "Hello"
在这个例子中,s[0:5]
提取了字符串的第 0 到第 4 个字符,生成了 "Hello"
。
2. 切片的常见用法
2.1 提取子字符串
通过切片可以轻松提取字符串中的一部分。
s = "Python Programming"
substring = s[7:18]
print(substring)
输出结果:
Programming
在这个例子中,我们从字符串 s
中提取了从索引 7 到 17 之间的子字符串 "Programming"
。
2.2 省略 start
和 end
参数
如果省略 start
参数,切片会从字符串的开头开始;如果省略 end
参数,切片会一直到字符串的结尾。
s = "Hello, World!"
result1 = s[:5] # 从开头到索引 5(不包括 5)
result2 = s[7:] # 从索引 7 到字符串的末尾
print(result1) # 输出 "Hello"
print(result2) # 输出 "World!"
这里,s[:5]
获取了 "Hello"
,s[7:]
获取了 "World!"
。
3. 使用负数索引
Python 允许使用负数索引来从字符串的末尾开始切片。负数索引的含义是从字符串的右端开始计数,-1
表示最后一个字符,-2
表示倒数第二个字符,依此类推。
示例:使用负数索引
s = "Python Programming"
result = s[-10:-1] # 从倒数第 10 个字符到倒数第 2 个字符
print(result) # 输出 "ogrammin"
在这个例子中,s[-10:-1]
提取了 "ogrammin"
,即从倒数第 10 个字符到倒数第 2 个字符。
示例:从字符串末尾开始切片
s = "Python"
result = s[-3:] # 从倒数第 3 个字符到字符串末尾
print(result) # 输出 "hon"
4. 步长切片
切片的步长(step
)控制提取子字符串时的间隔。步长默认是 1
,但是你可以设置为其他数值来指定间隔。例如,步长为 2
会提取每隔一个字符的内容。
示例:使用步长
s = "abcdefg"
result = s[::2] # 从头到尾,每隔一个字符提取
print(result) # 输出 "aceg"
这里,s[::2]
提取了字符串中索引为偶数的字符,即 "aceg"
。
示例:倒序切片
当步长为负数时,切片会从字符串的右端向左提取,从而实现倒序操作。
s = "Python"
result = s[::-1] # 反转字符串
print(result) # 输出 "nohtyP"
在这个例子中,s[::-1]
反转了字符串,生成了 "nohtyP"
。
5. 切片与字符串不可变性
需要注意的是,字符串在 Python 中是不可变的,切片操作不会修改原字符串,而是返回一个新的字符串。每次进行切片操作时,都会生成一个新的字符串对象。
示例:字符串不可变性
s = "Python"
new_str = s[0:3] # 获取子字符串
print(s) # 输出 "Python"(原字符串未改变)
print(new_str) # 输出 "Pyt"(新字符串)
6. 切片的应用场景
6.1 提取文件扩展名
假设我们有一个文件名,想要提取文件的扩展名,可以通过切片来实现。
filename = "example.txt"
extension = filename[-3:]
print(extension) # 输出 "txt"
6.2 字符串反转
通过步长为 -1
的切片,可以方便地反转字符串。
s = "hello"
reversed_s = s[::-1]
print(reversed_s) # 输出 "olleh"
6.3 判断回文字符串
通过切片和反转操作,我们可以轻松判断一个字符串是否是回文(即正读和反读都一样的字符串)。
s = "madam"
if s == s[::-1]:print("是回文")
else:print("不是回文")
输出结果:
是回文
7. 小结
字符串切片是 Python 中一个非常强大且灵活的工具。它可以帮助我们从字符串中提取子字符串、实现字符串反转、按照步长提取特定字符等。切片语法简单,通过灵活使用 start
、end
和 step
,我们可以轻松地处理各种字符串操作。特别是在字符串不可变的特性下,切片能够高效地创建新的字符串,而不会影响原始字符串。
掌握字符串切片可以使你的代码更加简洁和高效,尤其是在处理字符串时需要频繁截取子串或进行反转等操作时。
8. 课后练习
8.1 提取字符串的前后部分
编写一个程序,提取字符串的前 3 个字符和后 3 个字符并连接起来。
8.2 字符串反转
编写一个程序,输入一个字符串并反转它,然后输出反转后的字符串。
8.3 判断回文
编写一个程序,判断用户输入的字符串是否是回文,如果是回文则输出“是回文”,否则输出“不是回文”。
相关文章:
Day33:字符串的切片
在 Python 中,**切片(Slicing)**是对字符串(以及其他序列类型,如列表、元组等)进行提取部分内容的强大工具。通过切片,你可以非常方便地提取字符串的子字符串、倒序字符串,甚至进行步…...
基于回归分析法的光伏发电系统最大功率计算simulink建模与仿真
目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于回归分析法的光伏发电系统最大功率计算simulink建模与仿真。选择回归法进行最大功率点的追踪,使用光强和温度作为影响因素,电压作为输出进行建模。…...
redis离线安装部署详解(包括一键启动)
像上文一样 因为在学习的过程中没有查到一个详细的离线部署方案 所以在自己学习之后想要自己写一个文章 希望可以帮助后续学习redis离线部署的朋友少走一线弯路 首先就是下载安装包 可以自己在本地下载再传到机器上(通过xftp或lrzsz都可) http://d…...
Coze插件开发之基于已有服务创建并上架到扣子商店
Coze插件开发之基于已有服务创建并上架到扣子商店 在应用开发中,需要调用各种插件,以快速进行开发。但有时需要调用的插件在扣子商店里没有,那怎么办呢? 今天就来带大家快速基于已有服务创建一个新的插件 简单来讲,就是…...
【Unity】 HTFramework框架(五十九)快速开发编辑器工具(Assembly Viewer + ILSpy)
更新日期:2025年1月23日。 Github源码:[点我获取源码] Gitee源码:[点我获取源码] 索引 开发编辑器工具MouseRayTarget焦点视角Collider线框Assembly Viewer搜索程序集ILSpy反编译程序集搜索GizmosElement类找到Gizmos菜单找到Gizmos窗口分析A…...
【Linux】统计文本中每行指定位置出现的字符串的次数
统计文本中每行指定位置出现的字符串的次数 假定情景 某些项目,会把某个特定事件记录到Log中并且落盘(保持到硬盘)。基于落盘后的日志,要统计这些日志里产生该特定事件的次数 统计脚本 可以写一个sh脚本,来解析某个…...
牛客周赛round78 B,C
B.一起做很甜的梦 题意:就是输出n个数(1-n),使输出的序列中任意选连续的小序列(小序列长度>2&&<n-1)不符合排列(例如如果所选长度为2,在所有长度为2 的小序列里不能出…...
【DB】Oracle存储过程
目录 什么是存储过程? 为什么要使用存储过程? 创建存储过程 无参存储过程语法: 带参存储过程语法: 带有输入参数的存储过程 带有输出参数的存储过程 带有输入输出参数的存储过程 带有异常处理的存储过程 存储过程中游标…...
亚博microros小车-原生ubuntu支持系列:14雷达跟踪与雷达守卫
背景知识 激光雷达的数据格式参见: 亚博microros小车-原生ubuntu支持系列:13 激光雷达避障-CSDN博客 本节体验雷达跟踪跟守卫 PID控制 从百度百科摘一段介绍 比例积分微分控制(proportional-integral-derivative control)&am…...
c++迷宫问题(migong)
今天的题目叫“迷宫问题(migong)”,是“DFS深度优先搜索 递归”一类的。 题目描述 设有一个N*N(2<N<10)方格的迷宫,入口和出口分别在左上角和右上角。迷宫格子中 分别放0和1,0表示可通,1表示不能,入…...
深度学习项目--基于LSTM的糖尿病预测探究(pytorch实现)
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 LSTM模型一直是一个很经典的模型,一般用于序列数据预测,这个可以很好的挖掘数据上下文信息,本文将使用LSTM进行糖尿病…...
Java Swing 基础组件详解 [论文投稿-第四届智能系统、通信与计算机网络]
大会官网:www.icisccn.net Java Swing 是一个功能强大的 GUI 工具包,提供了丰富的组件库用于构建跨平台的桌面应用程序。本文将详细讲解 Swing 的基础组件,包括其作用、使用方法以及示例代码,帮助你快速掌握 Swing 的核心知识。 一…...
深圳大学-智能网络与计算-实验三:网络容量优化分析实验
实验目的与要求 了解什么是凸优化问题;学会使用 Matlab CVX 工具箱解决最优功率分配问题,使得信道容量最大化;了解注水算法; 方法,步骤 深入理解最优功率分配问题。使用 CVX 找出最优的功率分配。使用凸优化数学分析…...
嵌入式基础 -- PCIe 控制器中断管理之MSI与MSI-X简介
PCIe 控制器中断管理技术文档 1. 背景 在现代计算机系统中,中断是设备与 CPU 通信的重要机制,PCIe 控制器提供了从传统线中断到基于消息的中断(MSI/MSI-X)的演进,以提升中断处理效率和可扩展性。x86 和 ARM 架构虽然…...
Android-okhttp详解
目录 一,介绍 二,简单使用 三,流程分析 四,分发器 五,拦截器 5.1 重试及重定向拦截器 5.1.1 重试 5.1.2 重定向 5.2 桥接拦截器 5.3 缓存拦截器 5.4 连接拦截器 5.5 请求服务器拦截器 一,介绍 OkHttp是当下…...
CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测(Matlab完整源码和数据)
CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测(Matlab完整源码和数据) 目录 CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测(Matlab完整源码和数据)预测效果基本介绍 CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测一…...
数字图像处理:实验七
uu们!这是我们目前数字图像系列的最后一张,之后有关人工智能结合的数字图像处理咸鱼哥正在学习和创作中,所以还请大家给咸鱼哥点时间,同时也提前预祝大家2025年新春快乐!(咸鱼哥真诚的祝愿每一个人…...
Excel分区间统计分析(等步长、不等步长、多维度)
在数据分析过程中,可能会需要统计不同数据区间的人数、某个数据区间的平均值或者进行分组区间统计,本文从excel函数到数据透视表的方法,从简单需求到复杂需求,采用不同的方法进行讲解,尤其是通过数据透视表的强大功能大…...
QWindow类使用介绍与代码演示
深入浅出C++ Qt开发技术专栏 https://blog.csdn.net/yao_hou/category_9276099.html?spm=1001.2014.3001.5482 文章目录 QWindow主要功能和特性常用的函数示例代码适用场景QWindow父类QSurface`QSurface` 类概述主要功能和特性常用的函数相关的子类示例代码`QSurface` 的实际应…...
OpenCV图像显示imshow()函数——详解
OpenCV图像显示imshow()函数——详解 本文目录: 零、时光宝盒 一、OpenCV 图像显示使用imshow()函数语法 二、imshow()显示图片时发生图片显示不全的解决方法 解决办法(1) 解决办法(2) 总结 三、imshow()图像显…...
Oracle 12c 中的 CDB和PDB的启动和关闭
一、简介 Oracle 12c引入了多租户架构,允许一个容器数据库(Container Database, CDB)托管多个独立的可插拔数据库(Pluggable Database, PDB)。本文档旨在详细描述如何启动和关闭CDB及PDB。 二、容器数据库 (CDB) 2.1…...
二次封装的方法
二次封装 我们开发中经常需要封装一些第三方组件,那么父组件应该怎么传值,怎么调用封装好的组件原有的属性、插槽、方法,一个个调用虽然可行,但十分麻烦,我们一起来看更简便的方法。 二次封装组件,属性怎…...
【BQ3568HM开发板】如何在OpenHarmony上通过校园网的上网认证
引言 前面已经对BQ3568HM开发板进行了初步测试,后面我要实现MQTT的工作,但是遇到一个问题,就是开发板无法通过校园网的认证操作。未认证的话会,学校使用的深澜软件系统会屏蔽所有除了认证用的流量。好在我们学校使用的认证系统和…...
安装Ubuntu22.04
1.引用教程 如何安装Ubuntu Server 22.04 LTS_ubuntu22.04 server-CSDN博客 2.空间分配 要使用 docker 比较多所以分别的 docker 空间大...
Charles 4.6.7 浏览器网络调试指南:流量过滤与分析(六)
1. 概述 在网络调试和优化过程中,Charles 不仅可以实现简单的网络抓包操作,还支持更高级的抓包技巧和流量分析功能。这些功能能够帮助开发者深入挖掘网络请求的细节,为复杂问题提供有效的解决方案。本文将重点讲解 Charles 的过滤规则、自定…...
浅拷贝(Shallow Copy)和深拷贝(Deep Copy)
浅拷贝(Shallow Copy)和深拷贝(Deep Copy)是对象复制的两种方式,它们在处理对象内部引用类型成员时有不同的行为。下面我将详细解释这两种拷贝的区别,并提供具体的 Java 示例代码。 浅拷贝(Shal…...
解决双系统引导问题:Ubuntu 启动时不显示 Windows 选项的处理方法
方法 1:检查 GRUB 引导菜单是否隐藏 启动进入 Ubuntu 系统。打开终端,输入以下命令编辑 GRUB 配置文件:sudo nano /etc/default/grub检查以下配置项: GRUB_TIMEOUT0:如果是 0,将其改为一个较大的值&#x…...
宏_wps_宏修改word中所有excel表格的格式_设置字体对齐格式_删除空行等
需求: 将word中所有excel表格的格式进行统一化,修改其中的数字类型为“宋体, 五号,右对齐, 不加粗,不倾斜”,其中的中文为“宋体, 五号, 不加粗,不倾斜” 数…...
行政办公管理系统的需求设计和实现
前言: 总裁办/综合部,作为综合行政管理部门服务于整个公司,工作职责包含从最基础的行政综合到协调督办、对外政务、品牌建设等等,工作量繁多而且琐碎。如何通过信息化来实现标准化和常态化的管理手段,确保总裁办的各项…...
996引擎 - NPC-动态创建NPC
996引擎 - NPC-动态创建NPC 创建脚本服务端脚本客户端脚本参考资料有个小问题,创建NPC时没有控制朝向的参数。所以。。。自己考虑怎么找补吧。 创建脚本 服务端脚本 Mir200\Envir\Market_Def\test\test001-3.lua -- NPC入口函数 function main(player)-- 获取玩家的用户名…...
HTML<hgroup>标签
例子: 使用hgroup元素标记标题和段落是相关的: <hgroup> <h2>Norway</h2> <p>The land with the midnight sun.</p> </hgroup> 定义和用法: 标签<hgroup>用于包围标题和一个或多个<p&g…...
GIS 中的 SQLAlchemy:空间数据与数据库之间的桥梁
利用 SQLAlchemy 在现代应用程序中无缝集成地理空间数据导言 地理信息系统(GIS)在管理城市规划、环境监测和导航系统等各种应用的空间数据方面发挥着至关重要的作用。虽然 PostGIS 或 SpatiaLite 等专业地理空间数据库在处理空间数据方面非常出色&#…...
机试题——最小矩阵宽度
题目描述 给定一个矩阵,包含 N * M 个整数,和一个包含 K 个整数的数组。 现在要求在这个矩阵中找一个宽度最小的子矩阵,要求子矩阵包含数组中所有的整数。 输入描述 第一行输入两个正整数 N,M,表示矩阵大小。 接下…...
【C++图论】1761. 一个图中连通三元组的最小度数|2005
本文涉及知识点 C图论 LeetCode1761. 一个图中连通三元组的最小度数 给你一个无向图,整数 n 表示图中节点的数目,edges 数组表示图中的边,其中 edges[i] [ui, vi] ,表示 ui 和 vi 之间有一条无向边。 一个 连通三元组 指的是 …...
【力扣:新动计划,编程入门 —— 题解 ③】
—— 25.1.26 231. 2 的幂 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n 2x ,则认为 n 是 2 的幂次方。 示例 1: 输入:…...
「全网最细 + 实战源码案例」设计模式——工厂方法模式
核心思想 简单工厂模式是一种创建者模式,它通过一个工厂类负责创建不同类型的对象,根据传入的参数决定实例化的具体类,也被称为“静态工厂方法”模式,因为工厂方法通常是静态的。 结构 1. 工厂类: 提供一个静态方法…...
SpringBoot使用MockMVC通过http请求controller控制器调用测试
说明 在Spring Boot中编写测试控制器调用是一个常见的需求,通常使用Spring的测试框架来完成。Spring Boot提供了多种方式来测试控制器,包括使用MockMvc进行模拟HTTP请求和响应的测试。 基本示例 1. 创建Spring Boot项目 首先,确保你已经创建了一个Spring Boot项目。如果…...
电子应用设计方案105:智能家庭AI拖把系统设计
智能家庭 AI 拖把系统设计 一、引言 智能家庭 AI 拖把系统旨在为用户提供更高效、便捷和智能化的地面清洁解决方案,减轻家务劳动负担。 二、系统概述 1. 系统目标 - 自动清洁地面,包括吸尘、拖地和擦干功能。 - 智能识别地面材质和污渍程度,…...
Android13源码下载和编译过程详解
前言 作为Android开发者人人都应该有一份自己Android源码,这样我们就可以随时对自己有疑惑的地方通过亲手调试来加强理解 一 源码下载 1.1 配置要求 官方推荐配置请参考:AOSP使用入门文档,重点有如下几项: 1.1.1 硬件配置要求 至少需要…...
Greenplum临时表未清除导致库龄过高处理
1.问题 Greenplum集群segment后台日志报错 2.回收库龄 master上执行 vacuumdb -F -d cxy vacuumdb -F -d template1 vacuumdb -F -d rptdb 3.回收完成后检查 仍然发现segment还是有库龄报警警告信息发出 4.检查 4.1 在master上检查库年龄 SELECT datname, datfrozen…...
SD-WAN站点和客户端的区别
很多用户在使用比扬云SD-WAN的时候不清楚站点和员工客户端的区别,尤其是很多从ZeroTier迁移过来的用户,这篇文章我们会详细介绍比扬云SD-WAN的站点和客户端使用场景。 ZeroTier只有客户端,没有站点,但是有路由配置,允…...
Arduino大师练成手册 -- 控制 MH-SD 卡模块
要在 Arduino 上控制 MH-SD 卡模块,你可以按照以下步骤进行: 硬件连接 VCC:连接到 Arduino 的 3.3V 或 5V 引脚(根据模块的要求)。 GND:连接到 Arduino 的 GND 引脚。 CS:连接到 Arduino 的…...
【MQ】RabbitMq的可靠性保证
消息队列中的可靠性主要是分为三部分: 消息不丢失:确保消息从生产者发送到消费者消息不丢失消息不重复:确保消息不被重复消费消息顺序性:确保消费的顺序性 解决方案主要有以下几部分: 消息不丢失 生产者确认机制持久…...
自签证书的dockerfile中from命令无法拉取镜像而docker的pull命令能拉取镜像
问题现象: docker pull images拉取镜像正常 dockerfile中的from命令拉取镜像就会报出证书错误。报错信息如下: [bjxtbwj-kvm-test-jenkins-6-243 ceshi_dockerfile]$ docker build . [] Building 0.4s (3/3) FINISHED …...
LAPD协议
实现LAPD(Link Access Procedure on the D-channel)协议的具体步骤和代码示例会比较复杂,通常涉及到底层网络编程和对ISDN协议的深入理解。以下是一个更详细的实现指导,主要集中在C/C环境中。 环境准备 确保你有一个支持ISDN的开发…...
jupyter版本所引起的扩展插件问题
文章目录 如何永久切换python安装源为https://mirrors.aliyun.com/pypi/simple方法一:通过配置文件永久设置(推荐)步骤 1:创建或修改 pip 配置文件步骤 2:验证配置是否生效 方法二:通过命令行直接配置效果验…...
连接 OpenAI 模型:基础操作
在这一部分中,我们将介绍如何连接 OpenAI 模型,设置 API 密钥,并使用 Spring AI 的 ChatClient 与 OpenAI 模型进行简单的对话。Spring AI 为集成 OpenAI 模型提供了方便的工具,使得开发者能够更轻松地与 GPT 系列模型进行交互。 …...
Vue.js组件开发-实现对视频预览
在 Vue 中实现视频文件预览 实现步骤 创建 Vue 组件:构建一个 Vue 组件用于处理视频文件的选择和预览。文件选择:添加一个文件输入框,允许用户选择视频文件。读取文件:监听文件选择事件,使用 FileReader API 读取所选…...
基于 Arduino Uno 和 RFID-RC522 的 RFID 卡号读取技术详解
引言 射频识别(RFID)技术因其非接触式、高效性和低成本的特点,广泛应用于门禁系统、物流管理和智能设备等领域。本文将通过 Arduino Uno 和 MFRC522 RFID 模块,手把手教你实现 RFID 卡号的读取,并提供完整的代码解析和…...
AI Agent的测试与监控:保障稳定性的实战经验
在前面的文章中,我们讨论了 AI Agent 的各个核心模块。今天,我想聊聊如何保障 AI Agent 的稳定性。说实话,这个话题我一直很关注,因为在生产环境中,稳定性往往比功能更重要。 从一次线上事故说起 还记得去年一个深夜…...