python 迭代list列表同时pop操作 报list index out of range错误问题

2021-01-26 10:30:36 浏览数 (1)

参考链接: 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

"""

0 人点赞