python超出列表范围_关于(python)列表索引超出范围:(python)列表索引超出范围-迭代...

本问题已经有最佳答案,请猛点这里访问。

1

2

3

4for i in range(len(lst)):

if lst[i][0]==1 or lst[i][1]==1:

lst.remove(lst[i])

return lst

这就产生了"indexerror:list index out of range"(索引错误:列表索引超出范围)为什么会发生这种情况?

什么是lst?请复制整个函数。

如果你有五块钱,有人要你一块一块地把它们数出来,但是他们在你做的时候偷了一块,你就不算五块了,是吗?

您正在修改正在迭代的列表。如果这样做,列表的大小就会缩小,因此最终lst[i]将指向列表的边界之外。

1

2

3

4

5

6

7

8

9

10>>> lst = [1,2,3]

>>> lst[2]

3

>>> lst.remove(1)

>>> lst[1]

3

>>> lst[2]

Traceback (most recent call last):

File"", line 1, in

IndexError: list index out of range

构建一个新的列表比较安全:

1return [item for item in lst if item[0]!=1 and item[1]!=1]

在迭代过程中,不应该从list中删除cx1(1)项;这会更改所有后续项的索引,因此会更改IndexError。你可以尝试一个简单的列表理解:

1lst = [item for item in lst if (item[0] != 1 and item[1] != 1)]

或者,如果目标是在适当的地方修改列表,那么lst[:] =。

一般来说,这意味着您提供的是一个不存在列表元素的索引。

例如,如果您的列表是[12,32,50,71],并且您在索引10中请求元素,那么您将完全超出界限并收到一个错误,因为只有元素0到3存在。

通过推导,我得出结论,您的LST如下所示:

lst=[…[val1,val2],[val1,val2],[val1,val2]……]

我想这里发生的事情是你混淆了你的"我在射程内"和"我在射程内"(我也做过很多次)。

出现错误的行是:删除(lst[i])

您可以通过如下方式更改代码来更正此问题:

1

2

3

4for i in lst:

if i[0] ==1 or i[1] ==1:

lst.remove(lst[i])

return lst

您的代码在列表[i]之前的结构方式没有任何意义,您的i是一个大于lst中两个值项的数字。

= D

问题是您删除了列表中减小其大小的项。您需要做的是用要删除的索引创建一个数组,然后向后删除它们。

另一种方法是创建一个临时列表,添加不想删除的元素,然后用包含所有要保留元素的列表覆盖初始列表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值