使用list[int]作类型提示报错:TypeError: 'type' object is not subscriptable
解决list[int]类型提示报错的问题
问题原因
你遇到的TypeError: 'type' object is not subscriptable是因为Python版本低于3.9时,内置的list类型不支持直接用list[int]这种下标语法标注元素类型。这种写法是PEP 585引入的特性,仅在Python 3.9及以上版本可用。
两种解决方案
方案1:升级Python到3.9及以上版本
如果环境允许,直接升级Python到3.9+,你的原代码不需要任何修改就能正常运行,执行后会输出预期结果:Les valeurs paires dans [5, 8, -2, 23, 11, 4] sont : [8, -2, 4]。
方案2:使用typing模块的List类型(兼容旧版本)
如果无法升级Python,需要从typing模块导入List,并用List[int]替代list[int]。修改后的代码如下:
from typing import List def filtre_valeurs_paires(valeurs: List[int]) -> List[int]: valeurs_entieres: List[int] = list(filter(lambda valeur: valeur % 2 == 0, valeurs)) return valeurs_entieres candidats: List[int] = [5, 8, -2, 23, 11, 4] print("Les valeurs paires dans {} sont : {}".format(candidats, filtre_valeurs_paires(candidats)))
执行这段代码同样会得到预期的偶数列表输出。
额外说明
- 从Python 3.9开始,除了
list,dict、set、tuple等内置容器类型都支持直接用下标语法标注元素类型(比如dict[str, int])。 - 如果你使用的是Python 3.10及以上版本,还可以使用
|运算符标注联合类型(比如list[int | str]),进一步简化类型提示写法。
内容的提问来源于stack exchange,提问作者Marc Le Bihan
相关产品推荐
相关产品推荐

