当前位置: 首页 > 面试题库 >

Python循环:列表索引超出范围

齐阎宝
2023-03-14
问题内容

给出以下列表

a = [0, 1, 2, 3]

我想创建一个新列表b,该列表由将当前值和下一个值a相加的元素组成。它将包含 1 小于元件a

像这样:

b = [1, 3, 5]

(从0 + 1、1 + 2和2 + 3)

这是我尝试过的:

b = []
for i in a:
   b.append(a[i + 1] - a[i])
b

问题是我不断收到此错误:

IndexError: list index out of range

我很确定会发生这种情况,因为当我得到(3)的最后一个元素时,我无法将其添加到任何东西中,因为这样做超出了它的值(添加3之后就没有值了)
)。因此,我需要告诉代码在2处停止,同时仍引用3进行计算。


问题答案:
  1. for循环中,您正在遍历list的元素a。但是在循环的主体中,当您实际需要索引时,将使用这些项目为该列表建立索引。
    想象一下,如果列表a包含5个项目,那么其中将包含100,并且for循环会到达该项目。您实际上将尝试检索列表的第100个元素,该元素a显然不存在。这会给你一个IndexError

我们可以通过遍历一系列索引来解决此问题:

for i in range(len(a))

并访问a的项目,如下所示:a[i]。这不会出现任何错误。

  1. 在循环的主体中,您不仅在索引a[i],而且还在索引a[i+1]。这也是潜在错误的地方。如果您的清单包含5个项目,并且像我在第1点中所示的那样进行迭代,则会得到一个IndexError。为什么?因为range(5)本质上是0 1 2 3 4,所以当循环达到4时,您将尝试获取该a[5]项目。由于Python中的索引从0开始且您的列表包含5个项目,因此最后一个项目的索引为4,因此获得表示a[5]将获得不存在的第六个元素。

为了解决这个问题,您应该减去1len(a)以获得一个范围序列0 1 2 3。由于您使用的是索引i+1,因此您仍然会获得最后一个元素,但是这样可以避免错误。

  1. 有多种方法可以完成您要在此处完成的工作。它们中的一些非常优雅,更加“ pythonic”,例如列表理解:

b = [a[i] + a[i+1] for i in range(len(a) - 1)]

这只需要一行即可完成工作。



 类似资料:
  • 我有一个基于Euler项目问题3的代码:“13195的素数因子是5、7、13和29。600851475143中最大的素数因子是什么?” 我在下面有一个我认为可行的代码,但第9行()不断返回错误:“索引器:列表索引超出范围”。当我在for循环中移动时,似乎并没有修改列表,所以我不确定出了什么问题。 有人知道我哪里错了吗? 非常感谢。

  • 问题内容: 我在读取CSV文件时遇到此错误(无标题,3列,第二和第三字符串): 这是下面代码的一部分。坚持起来简直是愚蠢的简单事情,但是对于如何工作我只是空白。我是编码的新手,但是之前已经处理过csv模块,并且从来没有遇到过这方面的问题,只是在记事本中制作了一些测试csv文件,以查看是否可以从相同的代码中读取它,并且可以。我不知道。 问题答案: 尝试检查空白行。另外,请避免将其用作变量名。是打开的

  • 我试着运行这个: 但是得到这个错误: 回溯(最后一次调用): 文件“C:\Users\Shakh\Desktop\Hello3.py”,第4行,在 打印(“Hallo”,sys.argv[1]) 索引器:列表索引超出范围

  • 问题内容: 每当我运行xhtml时。它给了我以下例外。statusindex对象的值为5。我正在使用JQuery进行延迟滚动,因此当我的xhml页面getMoreStatusList调用getMoreStatusList函数时,它为我提供了超出范围的异常的索引。数据库中有26个状态更新,因此索引超出范围的异常对我来说毫无意义。 1)代码 2)例外 问题答案: 消息说是30。这不是您认为的5,而是2

  • 问题内容: 我在以下Python代码部分遇到问题: 具体的错误如下: 我已经进行了一些研究,似乎在运行脚本时,可能在命令行中需要一个参数,但是我不确定要添加什么或可能是什么问题!我也搜索了该站点,但是我发现的所有解决方案都没有评论,并且/或者没有像我一样包含开放功能。 任何帮助是极大的赞赏。 问题答案: 表示执行脚本所使用的命令行选项。 是您正在运行的脚本的名称。所有其他选项都包含在中。 您正在尝

  • 我想用php发送数据,用python获取数据。但shell_exec无法发送参数。我不明白问题出在哪里。这并不能纠正我的错误 这是我的php文件 刚出现的派克 错误 内容类型:text/html 回溯(最近一次调用last):文件“C:\wamp\www\MLWebsite\website\new.py”,第15行,在x=sys中。argv1索引器错误:列表索引超出范围 请帮我解决这个问题