【发布时间】:2013-03-26 20:14:09
【问题描述】:
我有一个列表,我想从中删除某些元素 我创建了一个 for 循环,并在这个 for 循环中放入了 del my list[i]
prule 是一个字符串列表,其中包含从0 到159 它的大小为11154 的字符串等数字。
def getind(li)
ret = {}
for i, x in enumerate(li):
if x not in ret:
ret[x] = []
ret[x].append(i)
return ret
dups = getind(prule)
for n in dups.get('159',[]):
del rulelines[n]
在这样做list assignment index out of range 一段时间后,我猜这是因为列表已更新。有什么我可以使用的,所以在 for 循环完成之前它不会更新
【问题讨论】:
-
prule和rulelines应该是同一个列表吗? -
@Schoolboy:我同意以重复的形式关闭,因为在原始答案被接受之前,整件事更适合作为对原始答案的评论。 “过于本地化”也有效。 耸耸肩
-
为什么在迭代列表时需要删除列表的元素?如果您想要一个仅删除某些元素的列表,您可以为此目的创建一个新列表并将元素附加到它(然后如果需要,然后将其重新绑定到其原始名称),如果您的包含条件很简单,这将更加 Pythonic。如果你想删除元素,因为内存是一个问题,你可以使用生成器来代替。
-
我同意,我也标记了它.. :)。为什么要耸耸肩??
-
@aestrivex 有 2 个单独的列表...请参阅this 背景问题