Python求列表平均值函数报错:List index out of range问题求助
解决列表平均值计算的IndexError问题
错误原因
你的循环逻辑存在问题:for i in table是直接遍历列表中的元素值,而非列表的索引。以你的number_table为例,循环时i会依次取到1、3、5、100这四个值,当i=100时,table[100]试图访问列表第101个元素,但原列表只有4个元素(索引范围是0-3),因此触发IndexError: list index out of range。
修正方案
方案1:直接遍历元素累加(推荐)
直接遍历列表中的元素进行累加,无需通过索引访问,逻辑更直观:
number_table = [1, 3, 5, 100] def average(table, count): sum_total = 0 # 避免使用内置函数名`sum`作为变量,防止覆盖 for num in table: sum_total += num return sum_total / count print(average(number_table, 4))
方案2:通过合法索引遍历
如果坚持使用索引,可通过range(count)生成合法的索引范围(0到count-1):
number_table = [1, 3, 5, 100] def average(table, count): sum_total = 0 for i in range(count): sum_total += table[i] return sum_total / count print(average(number_table, 4))
方案3:利用内置函数简化代码
Python内置的sum()函数可直接计算列表元素总和,代码更简洁高效:
number_table = [1, 3, 5, 100] def average(table, count): return sum(table) / count print(average(number_table, 4))
内容的提问来源于stack exchange,提问作者duckquy puf
相关产品推荐
相关产品推荐

