参考链接: Python list pop()
from numpy import *
import numpy as np
import os
l = [1,2,3,4,5]
"""
python迭代列表并且pop元素的问题
从列表最后一个元素开始遍历并且pop元素不会有问题,相当于for i in range(len(l)-1,-1,-1) 或者 for i in range(len(l))[::-1]
如果从前开始遍历,每pop一个词,列表的索引范围都会变小,
而i值的范围不会变化,最大值还是第一次循环开始的最大值,最后会报index out of range错误
"""
#反向遍历
for i in range(len(l))[::-1]:
print("i值为:",i)
if l[i] ==2:
l.pop(i)
print("元素值为: " ,l[i])
print(l)
"""
i值为: 4
元素值为: 5
i值为: 3
元素值为: 4
i值为: 2
元素值为: 3
i值为: 1
元素值为: 3
i值为: 0
元素值为: 1
[1, 3, 4, 5]
"""
#正向遍历
#结果可见,虽然元素pop了一个,但是下标i还是会执行到4才结束
for i in range(len(l)):
print("i值为:",i)
if l[i] ==2:
l.pop(i)
print("元素值为: " ,l[i])
print(l)
"""
i值为: 0
元素值为: 1
i值为: 1
元素值为: 3
i值为: 2
元素值为: 4
i值为: 3
元素值为: 5
i值为: 4
Traceback (most recent call last):
File "d:/Dataprocess/ProcessText/jiebaCut.py", line 34, in <module>
if l[i] ==2:
IndexError: list index out of range
"""