[[1, 2, 3], 3, [2, 4], 5]
的类型是list[list[int] | int]
。但是,如果嵌套列表的深度未定义,那么它会具有什么类型,例如[[[1, 2]], 2, [1, [3, [3]]]], 3, [2, [2]]]
?
您可以定义递归类型别名:
T: TypeAlias = list[Union[int, 'T']]
现在PEP 695已被接受,您可以在Python 3.12中执行以下操作:
type NestedList = list[int | NestedList]
请注意,您甚至可以将
"
放在 NestedList
周围,因为它不再是前向引用。
您甚至可以将其设为泛型类型,以便您可以轻松获取嵌套列表,例如字符串而不是整数:
type NestedList[T] = list[T | NestedList[T]]
nest_string_list: NestedList[str] = []
如果您使用选项 enable_incomplete_feature = ["NewGenericSyntax"]
,则mypy 从 1.11 版开始接受此设置。我想下个版本会完全支持。