跳到主要内容

Python slice() 函数

slice() 函数返回一个切片对象,用于切割任何序列(字符串、元组、列表、范围或字节)。

示例

text = 'Python 编程'

# 获取切片对象以切割 Python
sliced_text = slice(6)
print(text[sliced_text])

# 输出:Python

slice() 语法

slice() 的语法是:

slice(start, stop, step)

slice() 参数

slice() 可以接受三个参数:

  • start(可选) - 切割对象开始的起始整数。如果未提供,默认为 None
  • stop - 切割进行到哪个整数。切割在索引 stop -1(最后一个元素) 处停止。
  • step(可选) - 确定切片中每个索引之间的增量的整数值。如果未提供,默认为 None

slice() 返回值

slice() 返回一个切片对象。

注意:我们可以对任何支持序列协议(实现 __getitem__()__len()__ 方法)的对象使用切片。

示例 1:创建用于切片的切片对象

# 包含索引(0, 1, 2)
result1 = slice(3)
print(result1)

# 包含索引(1, 3)
result2 = slice(1, 5, 2)
print(slice(1, 5, 2))

输出

slice(None, 3, None)
slice(1, 5, 2)

这里,result1result2 是切片对象。

现在我们了解了切片对象,让我们看看我们如何从切片对象获取子字符串、子列表、子元组等。

示例 2:使用切片对象获取子字符串

# 程序获取给定字符串的子字符串
py_string = 'Python'

# stop = 3
# 包含 0, 1 和 2 索引
slice_object = slice(3)
print(py_string[slice_object]) # Pyt

# start = 1, stop = 6, step = 2
# 包含 1, 3 和 5 索引
slice_object = slice(1, 6, 2)
print(py_string[slice_object]) # yhn

输出

Pyt
yhn

示例 3:使用负索引获取子字符串

py_string = 'Python'

# start = -1, stop = -4, step = -1
# 包含索引 -1, -2 和 -3
slice_object = slice(-1, -4, -1)

print(py_string[slice_object]) # noh

输出

noh

示例 4:获取子列表和子元组

py_list = ['P', 'y', 't', 'h', 'o', 'n']
py_tuple = ('P', 'y', 't', 'h', 'o', 'n')

# 包含索引 0,1 和 2
slice_object = slice(3)
print(py_list[slice_object]) # ['P', 'y', 't']

# 包含索引 1 和 3
slice_object = slice(1, 5, 2)
print(py_tuple[slice_object]) # ('y', 'h')

输出

['P', 'y', 't']
('y', 'h')

示例 5:使用负索引获取子列表和子元组

py_list = ['P', 'y', 't', 'h', 'o', 'n']
py_tuple = ('P', 'y', 't', 'h', 'o', 'n')

# 包含索引 -1,-2 和 -3
slice_object = slice(-1, -4, -1)
print(py_list[slice_object]) # ['n', 'o', 'h']

# 包含索引 -1 和 -3
slice_object = slice(-1, -5, -2)
print(py_tuple[slice_object]) # ('n', 'h')

输出

['n', 'o', 'h']
('n', 'h')

示例 6:使用索引语法进行切片

在 Python 中,切片对象可以使用索引语法替代。

你也可以使用以下语法进行切片:

obj[start:stop:step]

例如,

py_string = 'Python'

# 包含索引 0,1 和 2
print(py_string[0:3]) # Pyt

# 包含索引 1 和 3
print(py_string[1:5:2]) # yh

输出

Pyt
yh