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

问题

# 会出现索引溢出现象
li = [1, 2, 3, 4, 5]

for i in range(li):
     li.pop(i)

print(li)
View Code
# dictionary false
dic = {'k1':'1', 'k2':'2', 'k3':'3'}

for i in dic:
    if 'k' in i:
        del dic[i]
print(dic)
View Code

解决

  列表

  倒序循环法

li = [1, 2, 3, 4, 5]

for i in range(len(li)-1, -1, -1):
     li.pop(i)

print(li)
View Code

  遍历拷贝删除法

# 删除指定元素
li = [1, 2, 3, 4, 5]

for item in li[:]:
    if item == 2:
        li.remove(item)
print(li)
View Code

  对于较大的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)
View Code

原文地址:https://www.cnblogs.com/dignity/p/9755730.html