0

我有一个列表,我想从中删除某些元素,我创建了一个 for 循环,在这个 for 循环中放入了 del my list[i]

prule是一个字符串列表,其中包含从数字0159其大小的字符串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 循环完成之前它不会更新

4

2 回答 2

0

正如我在这里的回答中更正的那样

dups = getind(prules)
indexes = dups.get('156',[])
rulelines = [rulelines[i] for i in range(len(rulelines[:])) if i not in indexes]

应该是解决您的问题的方法。

于 2013-04-04T16:35:07.697 回答
0

您应该向后浏览您的列表:

for x in range(subjectlength - 1, -1, -1):
    del my_list[x]
于 2013-04-04T16:29:23.127 回答