概述
Python 引入了多种字符串操作方法,允许获取字符串子字符串。其中一个操作称为 Slice。这个运算符非常通用且语法优雅,只需几个参数,就可以从字符串中获取许多子字符串组合。python 编程中的字符串切片就是通过从“开始”索引到“停止”索引切片来从给定字符串中获取子字符串。
切片()
Python 为我们提供了一个方法 slice(),它创建了一个“slice”对象,其中包含一组“start”和“stop”索引和步长值。具体来说,参数是(开始、停止、步进)。
根据 Python 官方关于 python 字符串切片的文档: Slice 有两种不同的实现方式,即 slice 有两种重载方法,每种方法都采用两组不同的参数:
-
slice(stop) // 起始为 0 & 步长为 1
-
切片(开始、停止、步进)
- start:是必须对其执行切片操作的字符串的起始索引。它确定字符串的切片将从哪里“开始”。
- stop:是切片的停止索引,'until'必须执行哪个切片操作,即在生成子字符串时排除停止索引。
- step:这是一个可选参数,用于定义迭代列表时的步骤,即它允许我们跳过元素。
两个 slice() 实现都返回一个格式为 slice(start, stop, end) 的对象。(检查示例-1)
此返回的对象现在可用于对字符串、列表、元组、集合、字节或范围对象进行切片。
应用:
示例 1 – 使用 slice 对象获取子字符串
s = "Welcome to scaler docs"
s1 = slice(6) # takes start as 0 automatically
print("s1-obj:", s1)
print("s1-res:", s[s1])
s2 = slice(2,8) # using slice(start, end, step) without step
print("s2-obj:", s2)
print("s2-res:", s[s2])
s3 = slice(1, 20, 2) # using slice(start, end, step) with step
print("s3-obj:", s3)
print("s3-res:", s[s3])
输出
s1-obj: slice(None, 6, None)
s1-res: Welcom
s2-obj: slice(2, 8, None)
s2-res: lcome
s3-obj: slice(1, 20, 2)
S3-res: ecm osae o
解释:
Slice() 有两个实现,一个具有单个参数,另一个具有三个参数。具有一个参数的实现将“stop”索引作为唯一且必需的参数,而具有三个参数的实现也采用“start”索引、“stop”索引和可选的“step”值。
在上面的例子中(在代码片段和输出中检查s1,s2和s3):
- 在 s1 中:我们首先使用了 slice(),它只接受一个 'stop' 参数。在输出中,我们收到的子字符串为“Welcom”,因为“start”索引自动设置为“0”,而“stop”设置为6。
- 在 s2 中:之后,我们使用带有三个参数方法的 slice(),但选择不提供可选的“step”参数。在输出中,我们收到了一个从索引“2”到“7”的子字符串,因为我们将“start”作为“2”提供,“stop”作为“8”。
- 在 s3 中:我们也用 'step' 实现 slice()。因为我们提供的“步骤”为 2。在输出中,我们通过从索引 1 到 20 前进到每个 2 个元素来接收一个子字符串
因此,现在很明显,“step”值决定了迭代器(在形成子字符串时)将以什么值前进或递增。
注意:理解“停止”索引意味着它不会在“此索引”或“之后”停止此索引。执行切片时,它在此索引之前停止。而“start”索引包含在被切片的字符串中。