使用del python时停止列表更新

时间:2013-04-04 16:22:58

标签: python list

我有一个列表,我想从中删除某些元素 我创建了一个for循环,在这个for循环中已经把我的列表[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循环结束

2 个答案:

答案 0 :(得分:0)

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

for x in range(subjectlength - 1, -1, -1):
    del my_list[x]

答案 1 :(得分:0)

正如我在答案here

中所纠正的那样
dups = getind(prules)
indexes = dups.get('156',[])
rulelines = [rulelines[i] for i in range(len(rulelines[:])) if i not in indexes]

应该是解决问题的方法。