You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python运行报错TypeError: map类型对象无len()方法如何解决

报错原因

该报错由Python3的map返回值特性与代码逻辑缺陷共同导致:

  • Python3环境下map()返回的是惰性迭代器对象,而非Python2中的实体列表,迭代器未实现长度计算接口,直接对其调用len()就会触发TypeError: object of type 'map' has no len()。
  • 迭代器是一次性遍历的消耗型对象:原代码先执行sum(entropy)时已经取完了迭代器内的所有元素,迭代器指针移到末尾,后续再执行list(entropy)只能得到空列表,哪怕调换sum和len的计算顺序,先转list取长度也会耗尽迭代器,导致后续sum计算结果为0,触发除零错误。
修复代码

提前将map返回的迭代器转为实体列表,列表既支持len()取长度,也支持重复遍历,不会出现迭代器耗尽的问题:

entropy = list(map(lambda x: x.get_entropy(), pe.sections))
res['SectionsMeanEntropy'] = sum(entropy) / len(entropy)

更推荐用可读性更好的列表推导式替代map+lambda的写法,执行效果完全一致:

entropy = [sec.get_entropy() for sec in pe.sections]
res['SectionsMeanEntropy'] = sum(entropy) / len(entropy)

内容的提问来源于stack exchange,提问作者El mehdi Laaziri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 07:51:26