我正在尝试为列表建立索引以拉出第一(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]。知道为什么会这样吗?
答案 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]
因为列表切片仍然会产生原始副本。