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

 

posted @ 2018-10-08 17:35  phappiness  阅读(457)  评论(0编辑  收藏  举报