AttributeError: 'map' object has no attribute 'index'解决方案之一

小白一枚,初入IT界,在处理项目代码时,发现运行已有程序老是出现该错误,并且检查语言也没有错误,后来经过分析发现:
竟然是python版本问题导致的出错,我这里的语言是python2系列编辑的语言:

density_diff = map(lambda x: abs(x-density), pc_densities)
index2use = density_diff.index(min(density_diff))

这里就有一个问题,对于map()函数的用法,在python2和3中的有些许差别,也就导致无法后续继续调用计算:
map() 函数语法:
map(function, iterable, …)
参数
function – 函数
iterable – 一个或多个序列
返回值
Python 2.x 返回列表。
Python 3.x 返回迭代器。

因此就需要就上述代码修改为:

 density_diff = list(map(lambda x: abs(x-density), pc_densities))
    index2use = density_diff.index(min(density_diff))

即将map函数返回的迭代器转换为list列表,这就是由于python版本不同导致的错误,还望后续小白们注意避坑,
同样的python其他内置函数也存在版本之间转换的问题,比如filter()等内置函数,在调用使用时注意。

你可能感兴趣的:(学习-排雷日志,python)