python - 列表范围内的索引的列表索引超出范围错误
问题描述
我正在尝试索引一个列表以提取第一个 (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]。知道为什么会这样吗?
解决方案
.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]
因为列表切片无论如何都会产生原始副本。
推荐阅读
- python - 测试元组列表之间的差异并构建结果字典
- wcf - WCF 服务在 1 台服务器上引发身份验证错误
- javascript - 基于多列的 HTML 表上的 Javascript 搜索
- typescript - 开玩笑看不到 TypeScript 类
- javascript - 在javascript中从本地文件系统加载Tensorflow js模型
- python - Creating a second dataframe considering 2 conditions from first dataframe
- java - Android 下载管理器不适用于所有手机
- python - PyQt - 拖放到不同的 QLabel 小部件中
- javascript - 淡入/淡出,上/下滑动方法重复/完成太快
- c - 我应该如何实现我的设备写入功能?