我正在学习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的功能是什么?
答案 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
的每次迭代中创建。
如果要从列表中删除项目,请使用remove
或del 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
关键字也可用于删除变量,列表或列表的一部分等。