小编Eze*_*año的帖子

如何在Python中输入包含多个元素的元组?

我正在试验该typing模块,我想知道如何正确输入像九角形(9 点多边形)这样的东西,它应该是元组而不是列表,因为它应该是不可变的。

在 2D 空间中,它会是这样的:

Point2D = Tuple[float, float]
Nonagon = Tuple[Point2D, Point2D, Point2D, Point2D, Point2D, Point2D, Point2D, Point2D, Point2D]

nine_points: Nonagon = (
    (0.0, 0.0),
    (6.0, 0.0),
    (6.0, 2.0),
    (2.0, 2.0),
    (6.0, 5.0),
    (2.0, 8.0),
    (6.0, 8.0),
    (6.0, 10.0),
    (0.0, 10.0),
)
Run Code Online (Sandbox Code Playgroud)

是否有任何语法糖可以使 Nonagon 声明更短或更容易阅读?

这不是有效的Python,但我正在寻找与此类似的东西:

Nonagon = Tuple[*([Point2D] * 9)]  # Not valid Python
Run Code Online (Sandbox Code Playgroud)

或者使用NamedTuple

# Not properly detected by static type analysers
Nonagon = NamedTuple('Nonagon', [(f"point_{i}", Point2D) for i in range(9)])  
Run Code Online (Sandbox Code Playgroud)

这不是我想要的:

# Valid …
Run Code Online (Sandbox Code Playgroud)

python geometry python-typing

6
推荐指数
1
解决办法
2102
查看次数

标签 统计

geometry ×1

python ×1

python-typing ×1