将值列表映射到浮点数时出现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 朴素贝叶斯与浮点数一起使用时出现未知标签类型错误