如何在python中声明列表推导式的类型



在Python中声明下列函数类型的正确方法是什么?

from typing import TypeVar, List
T = TypeVar('T')      # Declare type variable
def dual_combinator(self, a: List[T], b: List[T]) -> List[T]:
return [x for x in a if x in b]

我希望该类型表明输入变量ab可以是与列表推导和in运算符兼容的任何东西,并且输出应该是列表推导的输出。我认为a: List[T]b: List[T]可能太具体了,返回类型List[T]也可能是错误的。

我对这种特殊的类型系统很陌生。我还没想好怎么找到这样的信息。它可能在文档的某个地方有描述,所以我也希望简要描述一下如何在将来找到这样的文档。

你要迭代的参数应该是Iterable,你要搜索的参数应该是Container

from collections.abc import Iterable, Container
def dual_combinator(self, a: Iterable[T], b: Container[T]) -> List[T]:
return [x for x in a if x in b]

列表推导式总是返回一个列表,因此List[T]是正确的返回类型。

最新更新