前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 迭代list列表同时pop操作 报list index out of range错误问题

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

作者头像
用户7886150
修改2021-01-26 10:30:36
1.4K0
修改2021-01-26 10:30:36
举报
文章被收录于专栏:bit哲学院

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

"""

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档