python入门_老男孩_列表和字典循环删除的正确方法
问题

# 会出现索引溢出现象 li = [1, 2, 3, 4, 5] for i in range(li): li.pop(i) print(li)

# dictionary false dic = {'k1':'1', 'k2':'2', 'k3':'3'} for i in dic: if 'k' in i: del dic[i] print(dic)
解决
列表
倒序循环法

li = [1, 2, 3, 4, 5] for i in range(len(li)-1, -1, -1): li.pop(i) print(li)
遍历拷贝删除法

# 删除指定元素 li = [1, 2, 3, 4, 5] for item in li[:]: if item == 2: li.remove(item) print(li)
对于较大的list,拷贝占用内存大
字典

dic = {'k1':'1', 'k2':'2', 'a':'3'} l = [] for i in dic: if 'k' in i: l.append(i) for i in l: del dic[i] print(dic)