当前位置:首页 > Python > 正文

Python列表切片规则详解 - 从入门到精通

Python列表切片完全指南

掌握列表切片的核心规则、语法和实用技巧

什么是列表切片?

列表切片是Python中操作列表的强大功能,它允许您从一个列表中提取部分元素来创建新的子列表。

切片的基本语法:list[start:stop:step]

  • start: 起始索引(包含)
  • stop: 结束索引(不包含)
  • step: 步长(可选,默认为1)

切片基础示例

创建示例列表

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print("原始列表:", numbers)

1. 基本切片

# 获取索引2到5的元素
slice1 = numbers[2:6]
print("numbers[2:6] →", slice1)  # 输出: [2, 3, 4, 5]

# 获取前三个元素
slice2 = numbers[:3]
print("numbers[:3] →", slice2)   # 输出: [0, 1, 2]

# 获取从索引5到末尾
slice3 = numbers[5:]
print("numbers[5:] →", slice3)   # 输出: [5, 6, 7, 8, 9]

2. 使用步长

# 每两个元素取一个
slice4 = numbers[::2]
print("numbers[::2] →", slice4)  # 输出: [0, 2, 4, 6, 8]

# 从索引1开始,每三个元素取一个
slice5 = numbers[1::3]
print("numbers[1::3] →", slice5) # 输出: [1, 4, 7]

# 反向步长(从后向前)
slice6 = numbers[::-1]
print("numbers[::-1] →", slice6)  # 输出: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

高级切片技巧

3. 负索引切片

# 获取最后三个元素
slice7 = numbers[-3:]
print("numbers[-3:] →", slice7)  # 输出: [7, 8, 9]

# 从倒数第五个到倒数第二个
slice8 = numbers[-5:-1]
print("numbers[-5:-1] →", slice8) # 输出: [5, 6, 7, 8]

# 组合使用正负索引
slice9 = numbers[2:-2]
print("numbers[2:-2] →", slice9)  # 输出: [2, 3, 4, 5, 6, 7]

4. 切片修改列表

# 修改切片部分的值
numbers[3:6] = [30, 40, 50]
print("修改后:", numbers)  # [0, 1, 2, 30, 40, 50, 6, 7, 8, 9]

# 插入元素
numbers[2:2] = [100, 200]
print("插入后:", numbers)  # [0, 1, 100, 200, 2, 30, 40, 50, 6, 7, 8, 9]

# 删除元素
numbers[4:7] = []
print("删除后:", numbers)  # [0, 1, 100, 200, 50, 6, 7, 8, 9]

切片规则总结

语法 描述 示例
list[start:stop] 从start到stop-1的元素 [1,2,3,4][1:3] → [2,3]
list[:stop] 从开头到stop-1的元素 [1,2,3,4][:2] → [1,2]
list[start:] 从start到末尾的元素 [1,2,3,4][2:] → [3,4]
list[::step] 以step为步长获取元素 [1,2,3,4][::2] → [1,3]
list[::-1] 反转列表 [1,2,3,4][::-1] → [4,3,2,1]

切片使用注意事项

  • 切片操作返回的是新列表,原始列表不会被修改(除非显式赋值)
  • 当索引超出范围时,切片不会报错,而是尽可能返回有效范围内的元素
  • 步长不能为0,否则会引发ValueError
  • 负步长表示从右向左提取元素
  • 切片操作也适用于其他序列类型,如字符串、元组等

© 2023 Python列表切片教程 | 掌握Python核心技巧

发表评论