将值列表映射到浮点数时出现mypy错误

Posted

技术标签:

【中文标题】将值列表映射到浮点数时出现mypy错误【英文标题】:mypy error when mapping a list of values to float 【发布时间】:2022-01-09 18:03:06 【问题描述】:

我正在尝试使用 mypy 评估以下语句:

a = [1,2,3]

b = map(float, a)

这会返回错误

Argument 1 to "map" has incompatible type "Type[float]"; expected "Callable[[str], str]"

但在运行时执行没有问题。这个问题的原因是什么?

【问题讨论】:

你的python版本是多少?我在 2.7 和 3.9 中运行过它并且它正在工作 【参考方案1】:

我也无法复制它(Python 版本 3.9.0、mypy 版本 0.910),所以首先要尝试升级到最新版本。

不是完全相同的问题,但是mypy github上的这些问题可能是一个有趣的参考:

https://github.com/python/mypy/issues/6697(打开)https://github.com/python/mypy/issues/1855(关闭)

基于这些,看起来以下内容可能会通过而不会出现 mypy 错误:

b = map(lambda x: float(x), a)

【讨论】:

【参考方案2】:
a = [1,2,3]

b = map(lambda x: float(x), a)

【讨论】:

【参考方案3】:

问题与对结果变量和 map 应用到的变量使用相同的名称有关,我正在做一些类似的事情

a = b.split()
a = list(map(lambda x: float(x),a))

导致错误。在此处更改最后一行中的变量名称解决了此问题。

【讨论】:

以上是关于将值列表映射到浮点数时出现mypy错误的主要内容,如果未能解决你的问题,请参考以下文章

Python Ctypes,C++ 字符串到浮点数的转换在 python 中调用 Matplotlib 后给出错误/舍入的结果

将逗号添加到浮点数或字符串?

当 Sklearn 朴素贝叶斯与浮点数一起使用时出现未知标签类型错误

MODBUS RTU协议中浮点数是如何存储,读到浮点数寄存器的数值如何转换成所需的浮点数

有理数到浮点数

使用 sklearn 时出现错误:ValueError:无法将字符串转换为浮点数: