使用for循环从列表中删除元素

时间:2016-10-22 14:30:53

标签: python python-3.x

考虑这个片段

k=[0, 5, 12, 94]
a=max(k)

我打算使用for循环删除列表的最大元素。

for a in k:
    k.remove(a)

我预计答案将是

[0,5,12]

但显示的答案是

[5,12]

我错过了什么吗?它适用于while循环。

1 个答案:

答案 0 :(得分:0)

如果您要创建一个已完全消除最大值的新列表,请使用list-comprehension选择不等于a = max(k)的元素。

那是:

k = [0, 1, 6, 6, 6]
a = max(k)

result = [i for i in k if i != a]

这会产生一个包含以下内容的列表:

[0, 1]

顺便说一句,您应该知道在循环的a子句中分配名称for会屏蔽您使用a定义的a = max(k)

因此,for循环只是试图从列表中删除所有元素。