2016-10-22 115 views
-3

列表中的一個元素考慮這個片段刪除從使用循環

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

我打算刪除最大元素使用for循環列表。

for a in k: 
    k.remove(a) 

我希望答案是

[0,5,12] 

但顯示的答案是

[5,12] 

我缺少的東西?它適用於while循環。

+2

在變異時遍歷列表會導致麻煩;只要立即'k.remove(a)'。爲什麼要爲''循環的要求? –

+0

謝謝你的回覆。我只是在探索各種可能性。 –

+0

如果重複最大元素,我使用了循環。例如。 ''6'in'[1,2,6,6,6]' –

回答

0

如果您想要創建一個新的列表,其中最大值已被完全消除,請使用列表理解選擇不等於a = max(k)的元素。

即:

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

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

這導致包含列表:

[0, 1] 

順便說一句,你應該知道,循環的for子句中指定的名稱a掩蓋了您用a = max(k)定義的a

因此,for循環只是試圖從列表中刪除所有元素。