Python字符串切片操作

Python字符串切片操作我们基本上都知道 Python 的序列对象都是可以用索引号来引用的元素的 索引号可以是正数由 0 开始从左向右 也可以是负数由 1 开始从右向左 在 Python 中对于具有序列结构的数据来说都可以使用切片操作 需注意的是序列对象某个索引位置返回的是一个元素 而切片操作返回是和被切片对象相同类型对象的副本 今天恋习 Python 主要与大家一起谈谈 Python 字符串切片操作的那些事 一 字符串的切片

我们基本上都知道Python的序列对象都是可以用索引号来引用的元素的,索引号可以是正数由0开始从左向右,也可以是负数由-1开始从右向左。

在Python中对于具有序列结构的数据来说都可以使用切片操作,需注意的是序列对象某个索引位置返回的是一个元素,而切片操作返回是和被切片对象相同类型对象的副本。

今天恋习Python主要与大家一起谈谈Python字符串切片操作的那些事。

一、字符串的切片

字符串 ‘xxx’和 Unicode字符串 u’xxx’也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串。在很多编程语言中,针对字符串提供了很多各种截取函数,其实目的就是对字符串切片。Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。

切片操作(slice)可以从一个字符串中获取子字符串(字符串的一部分)。我们使用一对方括号、起始偏移量start、终止偏移量end 以及可选的步长step 来定义一个分片。

格式: [start:end:step]

 [:] 提取从开头(默认位置0)到结尾(默认位置-1)的整个字符串

 [start:] 从start 提取到结尾

 [:end] 从开头提取到end – 1

 [start:end] 从start 提取到end – 1

 [start:end:step] 从start 提取到end – 1,每step 个字符提取一个

 左侧第一个字符的位置/偏移量为0,右侧最后一个字符的位置/偏移量为-1

二、实战

任务:

请设计一个函数,它接受一个字符串,然后返回一个仅首字母变成大写的字符串。提示:利用切片操作简化字符串操作。

字符串有个方法 upper() 可以把字符变成大写字母,但它会把所有字母都变成大写。

print("abc".upper()) #输出 ABC

而我们只想让字符串的首字母变大写,因此可以通过使用字符串的切片操作来实现,代码如下:

''' 学习中遇到问题没人解答?小编创建了一个Python学习交流: 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! ''' def firstCharUpper(s): return s[0].upper() + s[1:] print(firstCharUpper('hello')) #输出 Hello

习题:实现strStr() By Python

给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回  -1。

示例 1:

输入:haystack = “hello”, needle = “ll”输出:2

示例 2:

输入:haystack = “aaaaa”, needle = “bba”输出:-1

关键思维:需要从haystack 字符串截取一个完整的 needle 字符串,自然而然想到字符串的切片方法

class Solution(object): def strStr(self, haystack,needle): """ :type haystack: str :type needle: str :rtype: int """ if not needle: return 0 h_h = len(haystack) h_n = len(needle) if h_h < h_n: return -1 for i in range(h_h - h_n + 1): if haystack[i:i+h_n] == needle: return i return -1

除了字符串的切片操作,还有哪些方法,欢迎大家留言讨论

结尾给大家推荐一个非常好的学习教程,希望对你学习Python有帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202029.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午8:02
下一篇 2026年3月20日 上午8:02


相关推荐

  • 开机黑屏 仅仅显示鼠标 电脑黑屏 仅仅有鼠标 移动 [已成功解决]

    开机黑屏 仅仅显示鼠标 电脑黑屏 仅仅有鼠标 移动 [已成功解决]

    2021年12月8日
    54
  • Java volatile的性能分析「建议收藏」

    Java volatile的性能分析「建议收藏」volatile通过内存屏障来实现禁止重排序,通过Lock执行来实现线程可见性,如果我们的程序中需要让其他线程及时的对我们的更改可见可以使用volatile关键字来修饰,比如AQS中的state所以在一个线程写,多个线程读的情况下,或者是对volatile修饰的变量进行原子操作时,是可以实现共享变量的同步的,但是i++不行,因为i++又三个操作组成,先读出值,然后再对值进行+1,接着讲结果写入,这个过程,如果中间有其他线程对该变量进行了修改,那么这个值就无法得到正确的结果。今天我们讨论的重

    2022年7月18日
    19
  • 直方图均衡化及算法步骤

    直方图均衡化及算法步骤2019 07 16 科学家首次拍摄到一种量子纠缠的照片 量子领域还不懂 先不研究 猛一看和今年刚出的黑洞照片倒有几分相似 黑洞照片看起来还是比较清晰地 这个是黑白的 亮度不均 肉眼看起来还是有些费力的 也是图像专业出身 因此打算撇开 PS 等图像工具 简单处理处理 此图来自新华网 http www xinhuanet com science 2019 07 16 c

    2026年3月26日
    1
  • OpenCV—python 边缘检测(Canny)「建议收藏」

    OpenCV—python 边缘检测(Canny)「建议收藏」一、OpenCV-Python中Canny()参数&quot;&quot;&quot;cv2.Canny(image,#输入原图(必须为单通道图)threshold1,threshold2,#较大的阈值2用于检测图像中明显的边缘[,edges[,apertureSize[,#…

    2022年5月29日
    47
  • 锐捷交换机配置手册完整

    锐捷交换机配置手册完整锐捷S3550配置手册第一部分:交换机概述一:交换机的几种配置方法本部分包括以下内容:控制台远程登录其它配置方法本部分内容适用于交换机、路由器等网络设备。 控制台用一台计算机作为控制台和网络设备相连,通过计算机对网络设备进行配置。1、硬件连接:把Console线一端连接在计算机的

    2022年6月15日
    86
  • matlab 图像填充斜线_怎么更改柱形图的填充

    matlab 图像填充斜线_怎么更改柱形图的填充针对这种情况,MATLAB提供了若干特殊图形绘制函数。接下来主要介绍特殊图形的绘制方法,主要图形包括:条形图、区域图、饼状图、柱状图、离散图、罗盘图、羽毛图、……针对这种情况,MATLAB提供了若干特殊图形绘制函数。接下来主要介绍特殊图形的绘制方法,主要图形包括:条形图、区域图、饼状图、柱状图、离散图、罗盘图、羽毛图、……[0,7,-2,2]);MATLAB提供的统计…

    2022年10月19日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号