for循环未从列表中删除所有项目,解决方案是什么?

时间:2018-06-28 06:56:56

标签: python list

我知道为什么此循环不借助相同问题的其他答案来删除list1中的所有项目,我的问题是对循环代码进行了哪些更改以删除list1中的所有项目。

这是我的代码:

    list1 = [1,'one',2,'two',3,'three']
    for x in list1:
      if x in list1:
        list1.remove(x)
    print(list1)

谢谢。

5 个答案:

答案 0 :(得分:3)

您可以这样做:

list1 = []

但是,如果要删除每个元素,则:

while list1!=[]:
    del list1[0]

编辑:Yann Vernier建议的更好,更快的方法:

del list1[:]

答案 1 :(得分:0)

在迭代对象时不要更改对象(除非您知道自己在做什么)。

可能的解决方法是迭代副本并修改原始对象:

list1 = [1,'one',2,'two',3,'three']
for x in list1[:]:
  if x in list1:
    list1.remove(x)
print(list1)

输出:

[]

答案 2 :(得分:0)

如果您想使用循环删除所有列表项,那么我认为这是最短的列表项之一:

while list1:
    del(list1[0]) #Before deletion of all items,always there will be an item at index 0

这个技巧也可能对您有帮助!

list1 = [1,'one',2,'two',3,'three']
for i in range(len(list1)):
    del (list1[0]) #Before deletion of all items,always there will be an item at index 0
print(list1)

答案 3 :(得分:0)

之所以无法删除所有元素,是因为在列表in中执行for循环时,它开始与第一个元素循环,但是当您删除该元素并移至下一个元素时元素,实际上您可以通过跳过第二个元素而移至第三个元素。让我举个例子 list1 = [1, "one", 2, "two", 3, "three"] 在第一次迭代中   当前元素为 1 ,并且在完成第一次迭代后,删除 1 ,当前元素为一个,然后移至下一个元素 2 ,这就是您遗漏删除一个的原因,并且这种情况仍在继续,最后您剩下"one", "two", "three"

我知道有点混乱,但我想它会有所帮助。

答案 4 :(得分:0)

用于从现有列表中删除值: 首先,选择列表的长度

list1 = [1,'one',2,'two',3,'three']
for i in range(len(list1)):
    list1.pop()

每次执行循环时,它将删除最后一个项目

             OR

您可以做到

list1 = [1,'one',2,'two',3,'three']
for i in range(len(list1)):
     del list1[0]