我有下面一段Python代码,我试图通过从末尾开始一次删除一个元素来清空列表A。我似乎无法将列表缩减为空列表,我想知道为什么不这样做。如有任何见解,我们将不胜感激。
A = [3,4,5,6,2]
for i in A:
A.pop()
var = [3,4,5,6,2]
for x in range(len(var)):
a = var.pop(-1)
print(a)
或反转列表
var = var[::-1]
您面临的这个问题是因为您试图从第一个元素迭代循环,并试图删除列表的最后一个元素。在一品脱的时候,for循环用完了列表中的元素,所以它停止了,您不会得到空列表。
正确的解决方案是对列表进行反向迭代并删除元素。
样本代码:
A = [3,4,5,6,2]
for i in range( len(A) -1 , -1, -1):
A.pop()
print (A)
你可以试试这个:
A = [3,4,5,6,2]
for a in range(len(A)):
A.pop(-1)
输出:
>>> A
[]
您也可以使用list comprehension
而不是传统的for
循环:
A = [3,4,5,6,2]
[A.pop(-1) for a in range(len(A))]
输出:
>>> A
[]
在这里,您试图遍历列表的元素,而每次迭代的列表长度都会减少1。
这不是正确的做法,
试试这个,
A = [3,4,5,6,2]
for _ in range(len(A)):
A.pop()
这会奏效的。
注意:永远不要循环遍历要在循环体中执行某些操作的列表。请尝试复制列表或使用其他条件。