python列表切片规则是什么?怎么做?

Python列表切片通过start:end:step提取子列表,如nums[2:6]得[2,3,4,5],支持省略参数与负索引,步长可正负,不修改原列表且越界不报错。

Python列表切片是一种快速提取列表中部分元素的方法,使用非常灵活。它的基本规则是通过指定起始、结束和步长来获取子列表。

切片的基本语法

切片使用方括号 [] 和冒号 : 来定义,格式如下:

list[start:end:step]
  • start:起始索引(包含),默认为0
  • end:结束索引(不包含),默认为列表长度
  • step:步长,即每隔几个取一个,默认为1

如果省略某部分,会使用对应默认值。

常见用法示例

假设有一个列表:

nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  • nums[2:6] → 取索引2到5的元素:[2, 3, 4, 5]
  • nums[:5] → 从开头取到索引4:[0, 1, 2, 3, 4]
  • nums[5:] → 从索引5取到末尾:[5, 6, 7, 8, 9]
  • nums[::2] → 每隔一个取一个:[0, 2, 4, 6, 8]
  • nums[::-1] → 步长为-1,实现反转:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
  • nums[7:2:-1] → 从索引7倒着取到索引3:[7, 6, 5, 4, 3]

负数索引和反向切片

Python支持负数索引,-1表示最后一个元素,-2表示倒数第二个,依此类推。

  • nums[-3:] → 取最后三个元素:[7, 8, 9]
  • nums[:-2] → 取除最后两个外的所有元素:[0, 1, 2, 3, 4, 5, 6, 7]
  • nums[-5:-2] → 从倒数第5个取到倒数第3个:[5, 6, 7]

注意事项

  • 切片不会改变原列表,而是返回一个新列表
  • 索引超出范围时不会报错,而是尽可能返回有效部分
  • 当步长为负时,start应大于end,否则结果为空
  • 空切片如 nums[4:4] 返回空列表 []

基本上就这些,掌握好索引方向和步长的关系,切片就很直观了。不复杂但容易忽略细节。