如何将 list[int, int, int] 转换为 tuple[int, int, int] 而不是 tuple[int, ...]

问题描述 投票:0回答:2

假设我有2个函数,

func1
func2
func1
返回3个整数的列表,
func2
接受3个整数的元组,我如何将列表转换为元组,以便可以通过类型检查器防止错误(我正在使用
mypy
) .
这是抛出错误的代码:

var1: list[int, int, int] = func1()
func2(tuple(var1))

func2
调用时抛出错误:
Expected type 'tuple[int, int, int]', got 'tuple[int, ...]' instead.

python list tuples type-hinting
2个回答
0
投票

列表类型不包含有关其长度的信息。理想情况下,

mypy
可以检查硬编码的
slice
对象来推断
tuple(var1[:2]])
具有类型
tuple[int, int, int]
,但事实并非如此(至少在今天)。

同时,您需要显式构造元组:

func2((var1[0], var1[1], var1[2]))

0
投票

我认为,没有办法做到这一点,因为

list[int, int, int]
不存在。如果使用列表,则只能指定列表包含的数据类型,例如
list[int]
如果您知道
func1
返回 3 个整数的列表,为什么不让它返回 3 个整数的元组?

© www.soinside.com 2019 - 2024. All rights reserved.