`Iterable [(int,int)]`tuple在类型提示中是不允许的

时间:2016-09-18 21:44:16

标签: python python-3.5 typing

我有这个非常简单的代码:

from typing import List, Iterable

Position = (int, int)
IntegerMatrix = List[List[int]]

def locate_zeros(matrix: IntegerMatrix) -> Iterable[Position]:
    """Given an NxM matrix find the positions that contain a zero."""
    for row_num, row in enumerate(matrix):
        for col_num, element in enumerate(row):
            if element == 0:
                yield (col_num, row_num)

这是错误:

Traceback (most recent call last):
  File "type_m.py", line 6, in <module>
    def locate_zeros(matrix: IntegerMatrix) -> Iterable[Position]:
  File "/usr/lib/python3.5/typing.py", line 970, in __getitem__
    (len(self.__parameters__), len(params)))
TypeError: Cannot change parameter count from 1 to 2

为什么我不能将一对迭代的Int对作为返回类型?

-> PositionIterable[Any]都有效,而不是IterablePosition一起工作。

1 个答案:

答案 0 :(得分:7)

您应该使用typing.Tuple[int, int]来声明元组类型Position,而不是(int, int)