德尔在这里到底在做什么?

时间:2019-07-03 09:57:02

标签: python

我正在学习python,我想创建一些代码来获取列表列表,检查每一行是否具有给定索引号的特定值,如果确实如此,则删除整行。现在,我凭直觉决定使用del删除行,但是当我打印出带有已删除值的列表时,我又得到了相同的列表。我添加了一个计数器,以检查是否有任何行要删除的值确实存在。以下代码说明了我遇到的问题:

test_list=[1,2,3,4,5]
for element in test_list:
    if element == 1:
        del element
print (test_list)

输出

[1,2,3,4,5]

如果不删除此处的元素,del的功能是什么?

4 个答案:

答案 0 :(得分:2)

实际上,del在您的代码中什么都不做。它只是删除对迭代变量的本地绑定(而不是对list元素的本地绑定,即使它们指向同一对象)。这对列表没有影响,无论如何,在下一次迭代中,变量将被分配给下一个值。

在一般情况下,如果您想使用del删除列表中的元素(并且您不知道它的位置),这是您必须要做的:

delete_me = 1
for i in range(len(test_list)-1, -1, -1):
    if test_list[i] == delete_me:
        del test_list[i]

请注意del对列表的工作方式,并且我们需要反向遍历该列表,以免在迭代列表时同时修改列表时出现问题。

不过,有一种更简单的方法-根本不使用del,而是使用列表理解:

delete_me = 1
test_list = [x for x in test_list if x != delete_me]

答案 1 :(得分:0)

del正在删除对对象element的引用。这不是对list元素的引用。

答案 2 :(得分:0)

您将删除名为element的临时变量,该变量在test_list的每次迭代中创建。

如果要从列表中删除项目,请使用removedel list[index]

  

更多内容:https://www.tutorialspoint.com/python/list_remove.htm
  How to remove an element from a list by index?
  Is there a simple way to delete a list element by value?

答案 3 :(得分:-1)

del关键字用于删除对象。在Python中,一切都是对象,因此del关键字也可用于删除变量,列表或列表的一部分等。

https://www.w3schools.com/python/ref_keyword_del.asp