如何从Python列表中删除元素?

在本文中,我们将介绍在 Python 中从列表中删除元素的所有方法。

Python 列表是日常编程中使用的最基本的数据结构。我们遇到过需要从列表中删除元素的情况,在本文中,我们将具体讨论这一点。

1. 根据值从列表中删除元素

Python 成为著名编程语言的原因之一是其存在大量内置函数。这些内置函数非常方便,从而使 Python 编写起来非常方便。

删除()函数

Python 有一个内置函数,remove()可以帮助我们根据值删除元素。

# List of integers
lis = [3, 1, 4, 1, 5, 9, 2, 6, 5]
 
# Remove element with value = 1
lis.remove(1)
 
# Printing the list
print(lis)
 
# Remove element with value = 9
lis.remove(9)
 
# Printing the list
print(lis)

输出:

[3, 4, 1, 5, 9, 2, 6, 5]
[3, 4, 1, 5, 2, 6, 5]

这里需要注意的关键事项是:

  • remove()函数接受一个参数——要删除的值。
  • 如果给定值多次出现,则删除第一个。
  • 删除元素不会在该位置留下空格,它只是将后面的元素向左移动。
  • 如果列表中没有这样的元素,则脚本会引发错误。

正确使用remove()函数

有一种简单的方法可以在删除元素时绕过错误,以防程序员不知道该元素出现在列表中。我们将使用if 条件来完成此操作。

# List of integers
lis = [1, 4, 2, 6, 1, 9, 10]
 
# Value to be removed
val = 6
 
# Check if the list contains the value
if val in lis:
 
    # Remove the value from the list
    lis.remove(val)
 
# Printing the list
print(lis)

输出:

[3, 1, 4, 1, 5, 9, 2, 5]

在上面的代码片段中,我们在删除之前首先检查列表中是否存在该值。


删除列表中所有出现的值

正如我们之前提到的,remove() 函数仅删除第一次出现的值。为了取出该值的所有实例,我们将使用while 循环

# List of integers
lis = [1, 4, 2, 6, 1, 9, 10]
 
# Value to be removed
val = 1
 
# Run until the list containes the value
while val in lis:
 
    # Remove the value from the list
    lis.remove(val)
 
# Printing the list
print(lis)

输出:

[3, 4, 5, 9, 2, 6, 5]

这总结了函数的用法remove()


2. 根据索引删除元素

有几种方法可以根据索引删除元素。让我们快速浏览一下它们中的每一个。

删除关键字

del是Python中的一个强大工具,用于删除整个对象。它还可用于从给定列表中删除元素。

# List of integers
lis = [3, 1, 4, 1, 5, 9, 2, 6, 5]
 
# Removing element from the start (index = 0)
del lis[0]
 
# Printing the list
print(lis)
 
# Removing element from the last (index = -1)
del lis[-1]
 
# Printing the list
print(lis)

输出:

[1, 4, 1, 5, 9, 2, 6, 5]
[1, 4, 1, 5, 9, 2, 6]

从上述脚本得出的一些观察结果是:

  • del不是一种方法。这是一条删除其后的项目的语句。
  • 从特定索引中删除元素会将下一个值移动到该特定索引(如果它不是最后一个索引)。
  • 提供大于(或等于)列表长度的索引将引发“超出范围”错误。

弹出()函数

顾名思义,pop()函数从指定索引中弹出一个元素。

# List of integers
lis = [3, 1, 4, 1, 5, 9, 2, 6, 5]
 
# Removing the fourth element (index = 3)
lis.pop(3)
 
# Printing the list
print(lis)
 
# Removing the second last element (index = -2)
lis.pop(-2)
 
# Printing the list
print(lis)

输出:

[3, 1, 4, 5, 9, 2, 6, 5]
[3, 1, 4, 5, 9, 2, 5]

我们在这里了解到的pop()方法是:

  • 它需要一个参数——列表的索引
  • 它根据给定的索引从列表中删除元素。以下元素向左移动。
  • 它支持向后索引。
  • 如果列表中不存在索引,则会引发“超出范围”错误。

我们有一篇完整的文章介绍pop() 方法的使用。


3. 从列表中删除一系列元素

Python 提供了从列表中删除一系列元素的功能。这可以通过语句来完成del

# List of integers
lis = [3, 1, 4, 1, 5, 9, 2, 6, 5]
 
# Removing first and second element
del lis[0:2]
 
# Printing the list
print(lis)
 
# Removing last two elements
del lis[-2:]
 
# Printing the list
print(lis)

输出:

[4, 1, 5, 9, 2, 6, 5]
[4, 1, 5, 9, 2]

让我们尝试理解这个过程:

  • 要从序列中的列表中删除多个元素,我们需要为语句提供一系列元素del
  • 一系列元素采用起始索引和/或结束索引,并用冒号分隔':'
  • 要删除的值包括起始索引,但不包括结束索引处的值。
  • 如果缺少结束索引,则范围包括直到列表末尾的所有元素。

4. 删除列表中的所有元素

Python 提供了一种在一行中清空整个列表的方法。

# List of integers
lis = [3, 1, 4, 1, 5, 9, 2, 6, 5]
 
# Removing all elements
lis.clear()
 
# Printing the list
print(lis)

输出:

[ ]

如果该函数应用于空列表,则不会引发任何错误。


结论

使用从列表中删除元素的方式(按值或索引)由您自行决定。不同的情况需要不同的方法,因此Python提供了多种从Python列表中删除元素的方法。

我们希望读者能够顺利理解本文。对于与该主题相关的任何疑问,请随时在下面发表评论。