如何在 Python 中对列表进行切片(索引、步骤和反转)
了解如何使用强大的括号语法在 Python 中对列表进行切片。掌握开始、停止和步骤参数、负索引和反转列表。
概述
切片是 Python 最直观、最强大的功能之一,使您能够使用干净简洁的语法提取列表、元组或字符串的子集。 Python 的切片表示法允许您在方括号内指定一系列索引,而不是编写冗长的循环来从列表中复制特定元素。
列表切片的完整语法是“my_list[start:stop:step]”。 “start”索引包含在内,“stop”索引不包含,“step”定义元素之间的增量(默认为 1)。如果省略“start”,Python 默认位于列表的开头。如果省略“stop”,Python 默认位于列表末尾。这使得提取集合的部分具有高度表现力。
切片也非常通用,因为它支持负索引。负的开始或停止索引从列表末尾开始向后计数(其中“-1”表示最后一项)。通过设置负步长值,例如“my_list[::-1]”,您可以快速检索列表的反向副本。了解切片范围对于干净的数据提取至关重要。
代码和执行输出
该脚本演示了使用不同的开始、停止、步长范围、负索引和列表反转的列表切片。
list_slicing.py
在编辑器中尝试numbers = [0, 10, 20, 30, 40, 50, 60, 70, 80]
# 1. Basic slicing: elements from index 2 up to (but excluding) 6
subset = numbers[2:6]
print("Subset [2:6]:", subset)
# 2. Omitting indices: start to index 4, and index 5 to end
first_five = numbers[:5]
last_four = numbers[5:]
print("First five [:5]:", first_five)
print("Last four [5:]:", last_four)
# 3. Using a step parameter: get every second element
every_second = numbers[::2]
print("Every second [::2]:", every_second)
# 4. Negative indexing: get the last three elements
last_three = numbers[-3:]
print("Last three [-3:]:", last_three)
# 5. Reverse the list using step=-1
reversed_numbers = numbers[::-1]
print("Reversed list [::-1]:", reversed_numbers)端子输出
Subset [2:6]: [20, 30, 40, 50]
First five [:5]: [0, 10, 20, 30, 40]
Last four [5:]: [50, 60, 70, 80]
Every second [::2]: [0, 20, 40, 60, 80]
Last three [-3:]: [60, 70, 80]
Reversed list [::-1]: [80, 70, 60, 50, 40, 30, 20, 10, 0]逐步实施
- 使用 list[start:stop] 提取从索引 start 到 stop 的元素,但不包括 stop。
- 省略开始或停止索引(例如 list[:4] 或 list[4:])以从列表边界进行切片。
- 在括号 list[::step] 内传递第三个参数以定期跳过元素。
- 使用负索引从集合末尾向后计数元素。
常见问题解答
切片会修改原始列表吗?
不,列表切片返回所请求范围的浅表副本,使原始列表完全不变。
如果切片索引越界会发生什么?
与访问引发 IndexError 的单个索引不同,切片是宽容的,只是在列表边界限制范围,如果没有元素落入该范围,则返回一个空列表。
相关主题
推荐的 Python 资源
通过相关的交互式教程、备忘单和代码比较来扩展您的知识。