列表范围内的索引的列表索引超出范围错误

时间:2019-10-27 23:23:30

标签: python python-3.x list function

我正在尝试为列表建立索引以拉出第一(0)和第二(1)项以进行进一步计算。我的代码当前如下所示:

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

这是我要用于计算的函数。在我的主程序中调用此函数的部分看起来像这样:

testscores = []
semestergrades = []

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

calculate_scores(testscores)

testscores列表从中拉出的列表长8个项目,它们全部浮动-但是,当我尝试运行此代码时,它为我尝试执行的部分给出了“列表索引超出范围”错误将变量“ gpa”设置为等于list [1]。但是,它似乎可以运行第一部分,将变量“ sat”设置为等于list [0]。知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

您应该使用.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]

因为列表切片仍然会产生原始副本。