使用 Python 类型模块指定序列或列表的长度

新手上路,请多包涵

我正在试一试 Python typing 模块。

我知道指定 a List 的长度是有效的,如下所示*:

 List[float, float, float]   # List of 3 floats <-- NOTE: this is not valid Python

是否有较长列表的简写形式?如果我想将它设置为 10 个浮点数怎么办?

 List[float * 10]   # This doesn't work.

任何想法,如果这是可能的,这会很方便。


*注意:事实证明,以这种方式向 Sequence[] (及其子类)提供多个参数目前不是有效的 Python。此外,目前无法以这种方式使用 typing 模块指定 Sequence 长度。

原文由 John Brodie 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
1 个回答

你不能。列表是可变的、 可变长度 的结构。如果您需要固定长度的结构,请改用元组:

 Tuple[float, float, float, float, float, float, float, float, float, float]

或者更好的是,使用一个 命名元组,它同时具有索引和命名属性:

 class BunchOfFloats(NamedTuple):
    foo: float
    bar: float
    baz: float
    spam: float
    ham: float
    eggs: float
    monty: float
    python: float
    idle: float
    cleese: float

对于固定长度的数据结构,列表只是错误的数据类型。

原文由 Martijn Pieters 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题