pytyhon 用del删除列表元素时,提示越界?

tmp = []
for i in range(5):
【\t】i = input()
【\t】tmp.append(i)
tmp[0] = {}
tmp[0]['name'] = 'make'
tmp[0]['age'] = 28
tmp.insert(0,88)
#del tmp[1] 在此时删除元素不会出错
for i in range(len(tmp)): #生成列表下标
【\t】if 'dict' in str(type(tmp[i])): #判断当前下标元素是否为一个字典
【\t】【\t】del tmp[i] #如果是,删除该下标处元素
print(tmp)
------------------------------------------------错误信息如下------------
sys
path
git
vim
what?
Traceback (most recent call last):
【\t】File "未命名.py",line 11 in
【\t】【\t】if 'dict' in str(type(tmp[i])): #判断当前下标元素是否为一个字典

IndexError:list index out of range

下标越界错误 ,好像没有越界啊,我要删除元素类型为字典的元素【1】
【\t】为一个tab键

最后一个for的i遍历可以到4,但删除了一个之后,只剩下4个了,也就是说tmp[4]已经不存在了,可以不用下标,直接用元素进行迭代

 tmp = []
for i in range(5):
    i = input()
    tmp.append(i)
tmp[0] = {}
tmp[0]['name'] = 'make'
tmp[0]['age'] = 28
tmp.insert(0,88)
#del tmp[1] 在此时删除元素不会出错
for it in tmp: #生成列表下标
    if 'dict' in str(type(it)): #判断当前下标元素是否为一个字典
        del it #如果是,删除该下标处元素
print(tmp)

for i in range(len(tmp)): #生成列表下标
if 'dict' in str(type(tmp[len(tmp) - i - 1])):
从后往前遍历就可以了。

由于采用数组下标遍历方式,遍历过程中删除了数组中的元素,导致数组中元素个数减少,那么在后续if 'dict' in str(type(it)):判断时,出现下标越界

 tmp = []
for i in range(5):
    i = input()
    tmp.append(i)

print(tmp)
tmp[0] = {}
tmp[0]['name'] = 'make'
tmp[0]['age'] = 28
tmp.insert(0,88)
print(tmp)
#del tmp[1] 在此时删除元素不会出错

for it in tmp: #生成列表下标
    if 'dict' in str(type(it)): #判断当前下标元素是否为一个字典
        tmp.remove(it) # 从数组中删除该元素
print(tmp)

--------------------打印结果-----------------------------
[0, 1, 2, 3, 4]
[88, {'name': 'make', 'age': 28}, 1, 2, 3, 4]
[88, 1, 2, 3, 4]