Python如何对嵌套列表指定索引位置的数值进行累加求和
嵌套列表指定数值累加问题解决方案
核心错误点
return语句缩进层级错误,位于for循环内部:函数第一次遍历子列表完成累加后就直接返回了结果,没有完成所有子列表的遍历,因此只能得到第一个子列表索引1位置的数值。- 全局变量
sumDurationInSecond使用不合理:未做初始化会触发未定义报错,且多次调用函数时会累加历史运行结果,不符合单次调用单次计算的需求。 - 补充:函数名存在拼写错误,定义的
totalInSecod缺少字母n,调用时如果拼写不一致会触发函数未找到错误。
修复方案
标准写法
def totalInSecond(someRandomData): # 函数内部初始化累加变量,避免依赖全局变量 sumDurationInSecond = 0 for value in someRandomData: sumDurationInSecond += value[1] # 循环完全执行后再返回结果 return sumDurationInSecond
简化写法
利用Python内置的sum()函数可以直接一行实现需求:
def totalInSecond(someRandomData): return sum(item[1] for item in someRandomData)
调用时注意修正函数名拼写即可:
print(totalInSecond(dataRand))
测试你给出的dataRand示例,返回结果为10800,符合预期。
内容的提问来源于stack exchange,提问作者Yvs
相关产品推荐
相关产品推荐

