Python 程序:从列表中删除项目

在本文中,我们将通过示例展示如何编写一个 Python 程序来从列表中删除项目或元素。此编程语言有许多内置函数可用于删除列表项,包括使用 remove()、pop()、clear() 函数以及 del 语句。除此之外,我们还可以使用循环或列表推导式根据条件删除项目。

使用 remove() 函数从列表中删除项目的 Python 程序

如果您知道要删除的值,请使用 remove() 函数。remove() 方法将搜索给定值的第一个出现项并将其从列表中删除。在下面的程序中,第一个语句将从列表中删除 25,下一个语句将删除 10。

a = [5, 10, 15, 20, 25, 30, 35, 40]

a.remove(25)
print(a)

a.remove(10)
print(a)
[5, 10, 15, 20, 30, 35, 40]
[5, 15, 20, 30, 35, 40]

pop()

pop() 函数使用索引值作为参数。因此,如果您知道要删除的项目的索引位置,请使用 pop() 方法。在下面的 Python 程序中,我们展示了多个示例以及如何打印弹出值。

  • a = n.pop(0) 删除第一个索引位置的项目并存储在变量 a 中。
  • b = n.pop(5) 删除第五个索引位置的项目并将其存储在变量 b 中。
  • c = n.pop(2) 删除第二个索引位置的项目并存储在变量 c 中。
n = [5, 10, 15, 20, 25, 30, 35, 40]

a = n.pop(0)
print(a)
print(n)

b = n.pop(5)
print(b)
print(n)

c = n.pop(2)
print(c)
print(n)
5
[10, 15, 20, 25, 30, 35, 40]
35
[10, 15, 20, 25, 30, 40]
20
[10, 15, 25, 30, 40]

除了正值之外,您还可以尝试使用负索引值作为 pop 方法的参数。在这里,-1 表示从列表中删除最后一个项目。如果您在不带参数的情况下使用此方法,它将默认删除最后一个列表元素。

n = [5, 10, 15, 20, 25, 30, 35, 40]

a = n.pop(-1)
print(a)
print(n)

b = n.pop(-3)
print(b)
print(n)

c = n.pop()
print(c)
print(n)
40
[5, 10, 15, 20, 25, 30, 35]
25
[5, 10, 15, 20, 30, 35]
35
[5, 10, 15, 20, 30]

使用 del 语句从列表中删除项目的 Python 程序

与 pop() 函数类似,delete 语句也使用索引值来删除列表项。但是,del 语句允许您放置单个索引或索引范围,例如切片。

在下面的程序中,第一个语句删除第三个索引位置的列表项。下一个语句删除从第二个索引位置到第六个位置的项。同样,最后一个语句将删除列表中的所有项,因为我们没有指定起始和结束,因此它将 0 视为起始,将 len-1 视为结束。

a = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]

del a[3]
print(a)

del a[2:6]
print(a)

del a[:]
print(a)
[5, 10, 15, 25, 30, 35, 40, 45, 50]
[5, 10, 40, 45, 50]
[]
Python Program to Remove an item from a List

clear()

如果您的目标是删除给定列表中的所有现有项目并保留该对象,请使用 clear() 方法。下面的 Python 程序使用 clear() 函数从列表 a 中删除所有项目。

a = [1, 2, 3, 4, 5, 6, 7]
print(a)

a.clear()
print(a)
[1, 2, 3, 4, 5, 6, 7]
[]

从列表中删除特定项目的 Python 程序

上述方法最适合根据索引位置或值删除项目。但是,您可以使用上述选项或下面提到的方法来根据给定条件从列表中删除特定元素。

下面程序中的 if 语句检查值五是否存在于列表 a 中。如果为真,pop() 函数将删除列表中第一个出现的 5。

a = [5, 10, 15, 5, 20, 25, 5, 30]
val = 5

if val in a:
a.pop(a.index(val))

print(a)
[10, 15, 5, 20, 25, 5, 30]

如果您将 pop() 方法与 for 循环结合使用,您可以删除所有出现的项。例如,下面的程序使用 for 循环的枚举器来迭代列表并捕获列表值和索引位置。If 语句检查值是否等于五;如果为真,则弹出该索引位置。

a = [5, 10, 15, 5, 20, 25, 5, 30]

for i, n in enumerate(a):
if n == 5:
a.pop(i)

print(a)
[10, 15, 20, 25, 30]

此 Python 程序使用 for 循环来迭代并使用 remove() 函数删除给定列表中整数五的所有出现项。

a = [5, 10, 15, 5, 20, 25, 5, 30]
val = 5

for i in a:
if i == 5:
a.remove(i)

print(a)
[10, 15, 20, 25, 30]

使用列表推导式从列表中删除项目的 Python 程序

这是根据条件删除任何特定列表元素最流行且最好的方法。下面的程序将所有列表项添加到列表中,除非该数字是 5。

a = [5, 10, 15, 5, 20, 25, 5, 30]

a = [n for n in a if n != 5]
print(a)
[10, 15, 20, 25, 30]

同样,您可以尝试以下代码来从给定的整数列表中删除奇数和偶数。

[5, 10, 15, 5, 20, 25, 5, 30]
[10, 20, 30]
[5, 15, 5, 25, 5]

在此程序中,我们使用了两种方法来删除给定列表中的重复列表项。在两种方法中,我们都使用 count() 函数来查找列表中每个元素的总出现次数。在这里,列表推导式将打印计数恰好等于一的列表。这意味着它删除了所有重复项。但是,for 循环将至少保留一个值。

a = [5, 10, 15, 5, 20, 25, 5, 30]
print(a)

new = [n for n in a if a.count(n) == 1]
print(new)

for n in a[:]:
while a.count(n) > 1:
a.remove(n)

print(a)
[5, 10, 15, 5, 20, 25, 5, 30]
[10, 15, 20, 25, 30]
[10, 15, 20, 25, 5, 30]

此 Python 程序使用 filter() 和 lambda 语句根据值等于 5 的条件删除列表项。

a = [5, 10, 15, 5, 20, 25, 5, 30]

a = list(filter(lambda n : n != 5, a))
print(a)
[10, 15, 20, 25, 30]