我知道为什么此循环不借助相同问题的其他答案来删除list1中的所有项目,我的问题是对循环代码进行了哪些更改以删除list1中的所有项目。
这是我的代码:
list1 = [1,'one',2,'two',3,'three']
for x in list1:
if x in list1:
list1.remove(x)
print(list1)
谢谢。
答案 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]