栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

  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]
    将获得不存在的第六个元素。

为了解决这个问题,您应该减去1

len(a)
以获得一个范围序列
0 1 23
。由于您使用的是索引
i+1
,因此您仍然会获得最后一个元素,但是这样可以避免错误。

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

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

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/455686.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号