【问题标题】:Is there a way to define a list data structure with specific element types in Python 3.9 type hinting? [closed]有没有办法在 Python 3.9 类型提示中定义具有特定元素类型的列表数据结构? [关闭]
【发布时间】:2021-11-11 02:06:12
【问题描述】:

例如,我想定义数据结构X,其中X 是一个list,包含三个元素。第一个元素和第三个元素是字符串,第二个元素是整数。所以是这样的:

X = List[str, int, str]

有没有合适的方法来定义这样的东西?

【问题讨论】:

  • 列表被设计成动态的。它们可以排序,项目可以弹出并插入到任何位置。所以,你的要求没有意义。

标签: python list type-hinting python-3.9


【解决方案1】:

列表通常用于收集长度未知的数据。 tuple 更适合您的用例:

from typing import Tuple

MyType = Tuple[str, int, str]
my_tuple: MyType = ("foo", 42, "bar")

更新:正如@sj95126 在他们的评论中提到的,您不必从 Python >= 3.9 开始导入 typing.Tuple

MyType = tuple[str, int, str]

【讨论】:

  • 在 Python 3.9 中,现在支持使用它,例如tuple[str, int, str] 不导入 typing
  • @Selcuk 我需要能够经常更改数据结构中的单个值(同时仍然坚持结构),这就是为什么我认为使用列表会更好。我还应该切换到元组吗?
  • @Ice tuples 是不可变的,因此您无法真正更改它们。您可以对 list 进行变异,但不能保证其中的元素数量。创建一个自定义类(也许是dataclass)可能是一个更好的主意。
  • @Selcuk 好的,感谢您的帮助!
猜你喜欢
  • 2023-02-08
  • 1970-01-01
  • 2016-08-10
  • 1970-01-01
  • 1970-01-01
  • 2017-10-29
  • 2021-06-19
  • 2011-04-15
相关资源
最近更新 更多