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

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 省略 startend 参数

如果省略 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 中一个非常强大且灵活的工具。它可以帮助我们从字符串中提取子字符串、实现字符串反转、按照步长提取特定字符等。切片语法简单,通过灵活使用 startendstep,我们可以轻松地处理各种字符串操作。特别是在字符串不可变的特性下,切片能够高效地创建新的字符串,而不会影响原始字符串。

掌握字符串切片可以使你的代码更加简洁和高效,尤其是在处理字符串时需要频繁截取子串或进行反转等操作时。


8. 课后练习

8.1 提取字符串的前后部分

编写一个程序,提取字符串的前 3 个字符和后 3 个字符并连接起来。

8.2 字符串反转

编写一个程序,输入一个字符串并反转它,然后输出反转后的字符串。

8.3 判断回文

编写一个程序,判断用户输入的字符串是否是回文,如果是回文则输出“是回文”,否则输出“不是回文”。

相关文章:

Day33:字符串的切片

在 Python 中,**切片(Slicing)**是对字符串(以及其他序列类型,如列表、元组等)进行提取部分内容的强大工具。通过切片,你可以非常方便地提取字符串的子字符串、倒序字符串,甚至进行步…...

汽车网络信息安全-ISO/SAE 21434解析(中)

目录 第七章-分布式网络安全活动 1. 供应商能力评估 2. 报价 3. 网络安全职责界定 第八章-持续的网络安全活动 1. 网路安全监控 2. 网络安全事件评估 3. 漏洞分析 4. 漏洞管理 第九章-概念阶段 1. 对象定义 2. 网路安全目标 3. 网络安全概念 第十章 - 产品开发 第十…...

rust feature h和 workspace相关知识 (十一)

feature 相关作用和描述 在 Rust 中,features(特性) 是一种控制可选功能和依赖的机制。它允许你在编译时根据不同的需求启用或禁用某些功能,优化构建,甚至改变代码的行为。Rust 的特性使得你可以轻松地为库提供不同的…...

从规则到神经网络:机器翻译技术的演进与未来展望

从规则到神经网络:机器翻译技术的演进与未来展望 引言 还记得早些年用翻译软件翻译一句简单的英文句子,却发现翻译结果让人啼笑皆非的日子吗?从“我喜欢吃苹果”被翻译成“我喜欢吃苹果电脑”,到今天的神经网络机器翻译(Neural Machine Translation, NMT)能够生成语义流…...

LLaMA-Factory 微调LLaMA3

LoRA介绍 LoRA(Low-Rank Adaptation)是一种用于大模型微调的技术, 通过引入低秩矩阵来减少微调时的参数量。在预训练的模型中, LoRA通过添加两个小矩阵B和A来近似原始的大矩阵ΔW,从而减 少需要更新的参数数量。具体来…...

Debian或Ubuntu系统中重置MySQL的root密码

你提供的步骤是针对在Debian或Ubuntu系统中重置MySQL的root密码的过程。以下是对你提供的步骤的详细说明和补充: 步骤 1.1 - 1.3:进入MySQL配置目录并使用debian-sys-maint账户登录MySQL # 进入MySQL配置目录 cd /etc/mysql/ # 使用vim编辑器打开debia…...

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.17 时间魔法:处理千万级时间序列的秘籍

1.17 时间魔法:处理千万级时间序列的秘籍 目录 #mermaid-svg-fa6SvjKCpmJ6C2BY {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-fa6SvjKCpmJ6C2BY .error-icon{fill:#552222;}#mermaid-svg-fa6SvjKCpmJ6…...

WPS数据分析000009

一、函数与数据透视表统计数据时效率差异 函数 F4绝对引用 数据透视表 二、数据透视表基础操作 数据透视表:一个快速的生成报表的工具 显示详细信息 方式一; 方式二: 移动数据透视表 删除数据透视表 复制粘贴数据透视表 留足空间,否则拖动字…...

Ansible自动化运维实战--script、unarchive和shell模块(6/8)

文章目录 一、script模块1.1、功能1.2、常用参数1.3、举例 二、unarchive模块2.1、功能2.2、常用参数2.3、举例 三、shell模块3.1、功能3.2、常用参数3.3、举例 一、script模块 1.1、功能 Ansible 的 script 模块允许你在远程主机上运行本地的脚本文件,其提供了一…...

K8S 快速实战

K8S 核心架构原理: 我们已经知道了 K8S 的核心功能:自动化运维管理多个容器化程序。那么 K8S 怎么做到的呢?这里,我们从宏观架构上来学习 K8S 的设计思想。首先看下图: K8S 是属于主从设备模型(Master-Slave 架构),即有 Master 节点负责核心的调度、管理和运维,Slave…...

用Python和PyQt5打造一个股票涨幅统计工具

在当今的金融市场中,股票数据的实时获取和分析是投资者和金融从业者的核心需求之一。无论是个人投资者还是专业机构,都需要一个高效的工具来帮助他们快速获取股票数据并进行分析。本文将带你一步步用Python和PyQt5打造一个股票涨幅统计工具,不…...

linux naive代理设置

naive linux客户端 Release v132.0.6834.79-2 klzgrad/naiveproxy GitHub Client setup Run ./naive with the following config.json to get a SOCKS5 proxy at local port 1080. {"listen": "socks://127.0.0.1:1080","proxy": "htt…...

猿人学第一题 js混淆源码乱码

首先检查刷新网络可知,m参数被加密,这是一个ajax请求 那么我们直接去定位该路径 定位成功 观察堆栈之后可以分析出来这应该是一个混淆,我们放到解码平台去还原一下 window["url"] "/api/match/1";request function…...

【学术会议征稿】第五届能源、电力与先进热力系统学术会议(EPATS 2025)

能源、电力与先进热力系统设计是指结合物理理论、工程技术和计算机模拟,对能源转换、利用和传输过程进行设计的学科领域。它涵盖了从能源的生产到最终的利用整个流程,旨在提高能源利用效率,减少能源消耗和环境污染。 重要信息 官网&#xf…...

对神经网络基础的理解

目录 一、《python神经网络编程》 二、一些粗浅的认识 1) 神经网络也是一种拟合 2)神经网络不是真的大脑 3)网络构建需要反复迭代 三、数字图像识别的实现思路 1)建立一个神经网络类 2)权重更新的具体实现 3&am…...

.strip()用法

.strip("") 是 Python 字符串方法 strip() 的一个用法,它会去除字符串两端指定字符集中的字符。 基本语法: string.strip([chars])string: 这是你要操作的字符串。chars: 可选参数,表示你想要去除的字符集(默认为空格…...

redis的分片集群模式

redis的分片集群模式 1 主从哨兵集群的问题和分片集群特点 主从哨兵集群可应对高并发写和高可用性,但是还有2个问题没有解决: (1)海量数据存储 (2)高并发写的问题 使用分片集群可解决,分片集群…...

【29】Word:李楠-学术期刊❗

目录 题目​ NO1.2.3.4.5 NO6.7.8 NO9.10.11 NO12.13.14.15 NO16 题目 NO1.2.3.4.5 另存为手动/F12Fn光标来到开头位置处→插入→封面→选择花丝→根据样例图片,对应位置填入对应文字 (手动调整即可)复制样式:开始→样式对话框→管理…...

基于 AI Coding 「RTC + STT」 Web Demo

文章目录 1. 写在最前面1.1 旧测试流程1.2 新测试流程 2. Cursor 编程 vs Copilot 编程2.1 coding 速度2.2 coding 正确性 3. 碎碎念 1. 写在最前面 为了 Fix 语音转文字(STT)产品在 Json 协议支持上的问题,笔者需要将推送到 RTC 的数据按照…...

doris:Parquet导入数据

本文介绍如何在 Doris 中导入 Parquet 格式的数据文件。 支持的导入方式​ 以下导入方式支持 Parquet 格式的数据导入: Stream LoadBroker LoadINSERT INTO FROM S3 TVFINSERT INTO FROM HDFS TVF 使用示例​ 本节展示了不同导入方式下的 Parquet 格式使用方法…...

L2TP使用举例

下面是一个使用C和POSIX套接字API实现L2TP协议的简单示例。这个示例展示了如何创建一个L2TP客户端,连接到L2TP服务器并发送数据。请注意,这只是一个基本的示例,实际的L2TP实现会更复杂,通常需要处理更多的协议细节和错误处理。 L…...

dup2 + fgets + printf 实现文件拷贝

思路 将源文件的内容读取到内存中,然后将这些内容写入到目标文件。 1: 打开源文件、目标文件 fopen() 以读模式打开源文件。 open ()以写模式打开目标文件。 2: 读取源文件、写入目标文件 fgets ()从源文件中读取内容。 printf ()将内容写入目标文件。 printf…...

实验六 带函数查询和综合查询(1)

实验六 带函数查询和综合查询(1) 一、实验目的 1.掌握Management Studio的使用。 2.掌握带函数查询和综合查询的使用。 二、实验内容及要求 1统计年龄大于30岁的学生的人数。 select count(*) from student where year(getdate…...

塔罗牌(基础):大阿卡那牌

塔罗牌(基础) 大啊卡那牌魔术师女祭司皇后皇帝教皇恋人战车力量隐士命运之轮正义吊人死神节制恶魔高塔星星月亮太阳审判世界 大啊卡那牌 魔术师 作为一个起点,象征:意识行动和创造力。 一个【显化】的概念,即是想法变…...

LLM大模型推理中的常见数字

1. 聊天机器人Chatbot,一般,input tokens : output tokens 1100:15 2. LLama2的tokenizer,中文情况下,token:汉字1:1.01 3. prefilling阶段的吞吐量(tokens/s),一般是decoding阶段的50~100倍。 4. 4张带有NVLink的…...

[ACTF2020 新生赛]Upload1

题目 以为是前端验证&#xff0c;试了一下PHP传不上去 可以创建一个1.phtml文件。对.phtml文件的解释: 是一个嵌入了PHP脚本的html页面。将以下代码写入该文件中 <script languagephp>eval($_POST[md]);</script><script languagephp>system(cat /flag);&l…...

SpringBoot整合Swagger UI 用于提供接口可视化界面

目录 一、引入相关依赖 二、添加配置文件 三、测试 四、Swagger 相关注解 一、引入相关依赖 图像化依赖 Swagger UI 用于提供可视化界面&#xff1a; <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactI…...

深度学习项目--基于LSTM的糖尿病预测探究(pytorch实现)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 LSTM模型一直是一个很经典的模型&#xff0c;一般用于序列数据预测&#xff0c;这个可以很好的挖掘数据上下文信息&#xff0c;本文将使用LSTM进行糖尿病…...

LeetCode - Google 大模型校招10题 第1天 Attention 汇总 (3题)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/145368666 GroupQueryAttention(分组查询注意力机制) 和 KVCache(键值缓存) 是大语言模型中的常见架构&#xff0c;GroupQueryAttention 是注意力…...

人工智能研究报告:技术、应用与未来趋势洞察

一、引言 1.1 研究背景 在当今科技飞速发展的时代&#xff0c;人工智能&#xff08;Artificial Intelligence&#xff0c;简称 AI&#xff09;已成为最为关键的技术领域之一。它犹如一股强大的变革力量&#xff0c;正深刻地重塑着各行业的发展格局&#xff0c;对社会的各个层…...