1
我需要從列表中刪除元素,同時迭代它(我無法創建一個新的列表,因爲它是在我無法控制的代碼中引用)。刪除列表元素,而迭代它
我想出的最好的是:
last_index = len(somelist) - 1
for (index,item) in enumerate(reversed(somelist)):
if somecondition(item):
del somelist[last_index - index]
有沒有更好的方法?我也看到了這個post和這個one,但是沒有一個提供的解決方案是有效的或簡潔的(恕我直言)。
您想要多簡潔和高效? [Alex Martelli的回答](http://stackoverflow.com/a/1208792/78845)似乎都是。與意見相關的問題與Stack Overflow不太匹配。 – Johnsyweb
你確定你的代碼真的有效嗎?初始化'somelist'到'range(100)'和'somecondition(item)'到'item%2',我得到一個IndexError。 – mgilson
@mgilson我的第一個想法是它應該是'del somelist [-index]'(用'enumerate(...,start = 1)')否則,我能想到的所有方法已經被前一篇文章所覆蓋 –