跳转至

切片操作

Python 中的切片操作和 slice() 函数是处理序列(如字符串、列表、元组等)中元素的强大工具。

切片操作 [start:stop:step]

基本语法

  • sequence[start:stop:step]
  • start : 切片的起始索引(包含该索引)。默认为 0。
  • stop : 切片的结束索引(不包含该索引)。必须小于序列长度。
  • step : 步长,默认为 1。可为负数,用于反向切片。

常见示例

lst = [0, 1, 2, 3, 4, 5]
print(lst[1:4])      # [1, 2, 3],从索引 1 开始到索引 4(不包含)结束
print(lst[:3])       # [0, 1, 2],从起始到索引 3(不包含)
print(lst[::2])      # [0, 2, 4],每隔两个元素取一个
print(lst[::-1])     # [5, 4, 3, 2, 1, 0],反转列表

注意事项

  • 索引可以为负数,表示从序列末尾计数。例如:lst[-3:] 从倒数第 3 个元素切到末尾。
  • 切片结果为原序列的**浅拷贝**。

slice() 函数

基本功能

- `slice()` 是内置函数,用于生成一个切片对象,可用于更灵活地定义切片范围。  
- 语法:`slice(start, stop, step)`  
- 参数意义与切片操作中的 `start:stop:step` 一致。

使用方法

  • 直接使用 slice() 对象切片:
    lst = [0, 1, 2, 3, 4, 5]
    s = slice(1, 4)  # 相当于 [1:4]
    print(lst[s])    # [1, 2, 3]
    
  • 结合动态索引:
    indices = slice(None, None, 2)  # 等价于 [::2]
    print(lst[indices])            # [0, 2, 4]
    

与切片操作的区别

  • [start:stop:step] 是切片的语法糖,常用于简单场景。
  • slice() 适用于需要动态计算切片范围的情况,或在代码中需要明确表示切片对象的地方。

通过以上方法,你可以轻松对序列进行切片操作,同时结合 slice() 提升代码的灵活性和可读性!