Python 中按索引从列表中删除元素

使用 del 语句按索引从列表中删除元素,例如 del my_list[2]。 del 语句可用于按索引从列表中删除元素,也可用于从列表中删除切片。

my_list = ['zero', 'one', 'two', 'three']

print(my_list.index('two'))  # ?️ 2


# ?️ remove list element by index

del my_list[2]

print(my_list)  # ?️ ['zero', 'one', 'three']

# ?️ remove slice of list elements

del my_list[0:2]

print(my_list)  # ?️ ['three']

Python 中按索引从列表中删除元素

第一个示例使用 del 语句从列表中删除一个元素。

Python 索引是从零开始的。 列表中第一项的索引为 0,第二项的索引为 1,最后一项的索引为 -1

del 语句用于通过索引而不是值从列表中删除项目。

我们还可以使用 del 语句从列表中删除一个切片。

my_list = ['zero', 'one', 'two', 'three']

print(my_list[0:2]) # 👉️ ['zero', 'one']

del my_list[0:2]

print(my_list) # 👉️ ['two', 'three']

列表切片的语法是 my_list[start:stop:step],其中 start 索引是包含的,stop 索引是不包含的。

该示例删除了索引 0 和 1 处的列表项。请注意,索引 2 处的元素未被删除,因为停止索引是独占的。

或者,我们可以使用 list.pop() 方法。

使用 list.pop() 方法按索引从列表中删除元素,例如 my_list.pop(0)。 list.pop 方法删除列表中给定位置的项目并将其返回。

my_list = ['zero', 'one', 'two', 'three']

my_list.pop(0)

# 👇️ ['one', 'two', 'three']
print(my_list)

如果未指定索引,则 pop() 方法移除并返回列表中的最后一项。

my_list = ['zero', 'one', 'two', 'three']

my_list.pop()

# 👇️ ['zero', 'one', 'two']
print(my_list)

pop 方法和 del 语句之间的主要区别是 list.pop() 返回删除的值。

my_list = ['zero', 'one', 'two', 'three']

print(my_list.pop(0)) # 👉️ zero

或者,我们可以使用列表切片。

当我们不想改变原始列表,而是想创建一个不包含特定索引处的项目的新列表时,这尤其有用。

my_list = ['zero', 'one', 'two', 'three']

idx = 2

new_list = my_list[0:idx] + my_list[idx+1:]

print(new_list)  # 👉️ ['zero', 'one', 'three']

我们使用加法 + 运算符来组合两个列表切片。

# 👇️ ['zero', 'one', 'two']
print(['zero', 'one'] + ['two'])

第一个切片从索引 0 开始,一直到但不包括指定索引处的项目。

my_list = ['zero', 'one', 'two', 'three']

idx = 2

print(my_list[0:idx]) # 👉️ ['zero', 'one']

print(my_list[idx+1:]) # 👉️ ['three']

new_list = my_list[0:idx] + my_list[idx+1:]

第二个切片从指定的索引 + 1 开始,因为我们不想在新列表中包含该索引处的项目。

在列表切片中,start 索引是包含的,stop 索引是不包含的。

这种方法不会从列表中删除元素,而是创建一个新列表,但在指定索引处没有该元素。