首页 > 解决方案 > 列表范围内的索引的列表索引超出范围错误

问题描述

我正在尝试索引一个列表以提取第一个 (0) 和第二个 (1) 项以进行进一步计算。我的代码目前如下所示:

def calculate_scores(list):
    sat = list[0]
    gpa = list[1]
    weighted_sat = (sat / 160)
    weighted_gpa = (gpa * 2)

这是我想用来进行计算的函数。在我的 main 中调用此函数的部分如下所示:

testscores = []
semestergrades = []

testscores.append(floatlist[0:4])
semestergrades.append(floatlist[4:])

calculate_scores(testscores)

testcores 列表从中提取的列表有 8 个项目长,所有项目都是浮动的 - 但是,当我尝试运行此代码时,它会在我尝试设置变量的部分出现“列表索引超出范围”错误'gpa' 等于列表 [1]。但是,它似乎能够运行第一部分,将变量 'sat' 设置为等于 list[0]。知道为什么会这样吗?

标签: pythonpython-3.xlistfunction

解决方案


.append()当您应该使用.extend()或仅使用切片的结果时,您正在使用:

# floatlist = [0.5, 1.5, 2.5, 3.5, 4.5, 5.5]
testscores = []
testscores.append(floatlist[0:4])
# testscores = [[0.5, 1.5, 2.5, 3.5]]

因此,您当前testscores的操作方式是一个包含一个元素的列表,该元素是floatlist[0:4]. 当您尝试使用第二个元素(索引1)时,您会得到一个 IndexError。

您可以使用.extend()而不是.append()将给定迭代中的所有项目添加到列表中。或者,你可以这样做

testscores = floatlist[0:4]

因为列表切片无论如何都会产生原始副本。


推荐阅读