Python统计列表可被x整除元素遇嵌套列表触发TypeError如何修复
修复方案
你需要增加嵌套列表的递归处理逻辑,修改后的代码如下:
def my_div_calc(l, x): total = 0 for i in l: # 遇到嵌套列表则递归统计子列表的符合条件元素 if isinstance(i, list): total += my_div_calc(i, x) # 仅对数值类型做整除判断 elif isinstance(i, (int, float)): if i % x == 0: total += 1 return total
修改说明
- 删掉了原代码中无用的
i/x语句,该语句没有赋值也没有判断逻辑,不影响计算结果仅会浪费性能 - 新增列表类型判断逻辑,遇到嵌套列表时递归调用当前函数,把子列表的统计结果累加到总计数中
- 将原有的
type判断替换为isinstance,兼容性更强,同时支持多类型合并判断的写法更简洁 - 去掉了无操作逻辑的
else: sum += 0分支,冗余分支可直接省略 - 将变量名从
sum改为total,避免覆盖Python内置的sum()函数
效果验证
你给出的两个测试用例均可正常运行:
- 普通列表
l = [1,3,3, 'hello']、x=3,调用函数返回2,符合预期 - 嵌套列表
l = [1,3,[3], 'hello']、x=3,调用函数返回2,符合预期且不会抛出类型错误
内容的提问来源于stack exchange,提问作者user15415514
相关产品推荐
相关产品推荐

