编程作业求助:嵌套混合列表指定字符串转整数并计算平均值
嵌套字符串列表指定元素转整数并计算平均值的解决方案
你的目标是将嵌套列表中每个子列表的数字字符串元素(示例中为每个子列表的第3到第5项,对应索引2、3、4)转换为整数,再计算所有这些整数的平均值。以下是具体实现和错误排查:
常见问题原因
- 误将非数字字符串(如名字)尝试转换为整数,触发
TypeError - 循环或切片范围错误,导致没有收集到任何整数,返回空列表
- 计算平均值时未考虑空集合的边界情况
正确实现代码
方式1:嵌套for循环(直观易读)
data = [['Ty', 'Cobb', '178', '65', '934'], ['Chipper', 'Jones', '4532', '873', '32']] converted_numbers = [] # 遍历每个子列表 for sub_list in data: # 只处理子列表中从索引2开始的数字字符串 for num_str in sub_list[2:]: converted_numbers.append(int(num_str)) # 计算平均值 if converted_numbers: average = sum(converted_numbers) / len(converted_numbers) print(average) else: print("无有效数字元素可计算")
方式2:列表推导式(简洁高效)
data = [['Ty', 'Cobb', '178', '65', '934'], ['Chipper', 'Jones', '4532', '873', '32']] converted_numbers = [int(num_str) for sub_list in data for num_str in sub_list[2:]] average = sum(converted_numbers) / len(converted_numbers) if converted_numbers else 0 print(average)
错误排查提示
- 若出现
TypeError:检查是否误处理了子列表前两项的名字字符串,确保只转换确定是数字格式的元素 - 若返回空列表:核对切片范围是否正确,比如是否写成了
sub_list[:2](取前两个名字元素),而非sub_list[2:]
内容的提问来源于stack exchange,提问作者Emma
相关产品推荐
相关产品推荐

