NameError: name 'List' is not defined

NameError: name 'List' is not defined

我真的不确定为什么这不起作用。这是代码的重要部分(来自 leetcode 挑战)。 第一行抛出 NameError。

def totalFruit(self, tree: List[int]) -> int:
    pass

如果我首先尝试导入 List,我会得到一个错误 No module named 'List'。我正在使用来自 Anaconda 的 Python 3.7.3。

为了能够注释您的列表应该接受什么类型,您需要使用 typing.List

from typing import List

那你导入了吗List

更新

如果您使用的是 Python > 3.9,

为了能够在类型提示中指定一个 str 列表,您可以使用 typing 包和 from typing import List(大写,不要与内置的 list)

Python 3.9起,您可以使用内置集合类型(例如list)作为泛型类型,而不是从typing导入相应的大写类型。
这要感谢 PEP 585

所以在 Python 3.9 或更新版本中,你实际上可以写:

def totalFruit(self, tree: list[int]) -> int: # Note list instead of List
    pass

无需导入任何内容。

如果我们定义一个列表,比如a = [1,2,3],那么type(a)就会return<class 'list'>,这意味着它将由内置的list创建].

List 可用于注释 return 类型。例如,使用 Python3 的函数签名:def threeSumClosest(self, nums: List[int], target: int) -> int: from https://leetcode.com/problems/integer-to-roman/.