通过弹出删除最后一个列表元素



我有下面一段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()

这会奏效的。

注意:永远不要循环遍历要在循环体中执行某些操作的列表。请尝试复制列表或使用其他条件。

相关内容

  • 没有找到相关文章

最新更新