📜  Python列表切片(1)

📅  最后修改于: 2023-12-03 15:34:27.849000             🧑  作者: Mango

Python列表切片

列表切片是Python中用于获取列表的子集的一种方法。切片是通过指定列表中元素的开始和结束索引来定义的,这样就可以选择需要的部分而不是整个列表。这个功能可以让我们更方便地访问和处理异构列表。本文将深入了解Python中切片的用法和特征。

切片语法

使用切片,需要指定要处理的列表/元组/字符串对象,语法为:

obj[start:end:step]
  • start:起始索引(包含)。若不传入,则默认为0。
  • end:结束索引(不包含)。若不传入,则默认为列表长度
  • step:步长。若不传入,则默认为1。该值可以为负数,这意味着从末尾向前切片。

需要注意的是,起始/结束索引的位置是相对于列表的元素个数来确定的。

几个示例
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 获取索引2~5的元素(不包含5)
print(numbers[2:5])  # [2, 3, 4]

# 获取索引4~最后一个元素
print(numbers[4:])  # [4, 5, 6, 7, 8, 9]

# 获取索引0~7每隔2个元素的元素
print(numbers[0:7:2])  # [0, 2, 4, 6]

# 获取列表的倒数三个元素
print(numbers[-3:])  # [7, 8, 9]

# 反转列表
print(numbers[::-1])  # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
注意

列表切片是原地创建新列表的,因此对切片的修改不会更改原始列表。例如:

numbers = [0, 1, 2, 3, 4, 5]

# 修改切片
numbers[1:3] = [9, 8, 7]
print(numbers)  # [0, 9, 8, 7, 3, 4, 5]

# 修改原始列表
numbers[:] = []
print(numbers)  # []

还应该注意,在进行切片时,不应超出列表的长度,否则会引发IndexError异常。例如,若列表长度为5,则只能使用0~4的索引。

最后,我们还可以利用slice()内置函数来创建切片对象,再将其应用于列表。例如:

numbers = [0, 1, 2, 3, 4, 5]

s = slice(2, 5)
print(numbers[s])  # [2, 3, 4]