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

Python中int二维列表与float二维列表相加触发mypy报错的原因是什么

mypy报错原因解析
  • mypy做静态类型检查时,默认会对无标注的字面量做最窄类型推导:你代码里的[[0,0,0]]所有元素都是整数,没有显式标注类型,因此被mypy推导为List[List[int]]类型。
  • 你定义的变量a已显式标注为List[List[float]]类型,而Python列表的+运算符要求左右两侧的列表元素类型必须互相兼容,mypy检查时默认不允许int列表和float列表直接拼接,因此抛出类型不支持的报错。
  • 运行时无报错是因为Python是动态类型语言,int类型可以隐式转换为float类型,所以列表拼接和后续numpy数组生成的操作都可以正常执行,这属于动态运行特性和静态检查规则的差异。
修复方案参考

你可以通过显式标注字面量类型,或者将字面量元素改为float形式规避报错:

# 方案1:显式标注字面量类型
def test(self) -> np.ndarray:
    a: List[List[float]] = [[1, 1.3, 0.5]]
    base: List[List[float]] = [[0,0,0]]
    return np.array(base + a)

# 方案2:直接写float类型字面量
def test(self) -> np.ndarray:
    a: List[List[float]] = [[1, 1.3, 0.5]]
    return np.array([[0.0,0.0,0.0]] + a)

内容的提问来源于stack exchange,提问作者dmmpie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:45:05