gpt4 book ai didi

python - 使用内置 map 功能打字

转载 作者:太空宇宙 更新时间:2023-11-03 15:14:23 25 4
gpt4 key购买 nike

我的 IDE (PyCharm) 无法自动完成以下操作:

from typing import List, TypeVar

T = TypeVar('T')

def listify(x: T) -> List[T]:
return [x]

str_list: List[str] = ['a', 'b']
listified = map(listify, str_list)
listified[0].<TAB> # autocomplete fail, IDE fails to recognize this is a List

这是我的 IDE 的问题,还是 typingmap 不兼容?

无论答案是什么,我尝试通过包装 map 来修复:

from typing import Callable, Iterable, List, TypeVar

T = TypeVar('T')
U = TypeVar('U')

def listify(x: T) -> List[T]:
return [x]

def univariate_map(func: Callable[[T], U], x: Iterable[T]) -> Iterable[U]:
return map(func, x)

str_list: List[str] = ['a', 'b']
listified = univariate_map(listify, str_list)
listified[0].<TAB> # still fails to autocomplete

再说一次,这是我的 IDE 的问题,还是我对 typing 模块的期望不正确?

最佳答案

问题在于 map 返回一个迭代器,而您无法索引 ([0]) 迭代器。当您将 map 转换为 list 时,PyCharm 会识别该类型:

from typing import List, TypeVar

T = TypeVar('T')

def listify(x: T) -> List[T]:
return [x]

str_list: List[str] = ['a', 'b']
listified = list(map(listify, str_list)) # list is new here
listified[0].

屏幕截图:

enter image description here

但是,即使没有任何类型提示(在本例中),PyCharm 似乎也可以推断出函数的类型。

关于python - 使用内置 map 功能打字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43990054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com