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

我正在试一试 Python typing 模块。

我知道像下面这样指定 List 的长度是有效的*:

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

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

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

如果可能的话,这会很方便。


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

最佳答案

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

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

或者更好的是,使用 named tuple ,它同时具有索引和命名属性:

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

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

https://stackoverflow.com/questions/58183705/

相关文章:

angular - 重新加载页面后保持元素位置 - 拖放 cdk Angular 7

google-chrome - 一些 Font Awesome 图标在 Chrome 中不显示

reactjs - Jest 性能问题

android-studio - Android studio 在执行 lint 时找不到 kotl

node.js - nodemailer 不发送邮件,给出 250 ok

python - 将部分训练的 scikit-learn 模型存储或检查点到磁盘

reactjs - 错误 : [mobx] Computed values are not allo

selenium - Appium/WinAppDriver 无法找到上下文菜单 - 但仅在某些机器

bash - 如何使用 Shell 脚本在 mac 中覆盖环境变量

python - 如何在 keras 中训练顺序模型,给出一个列表作为输出和输入?