Python中如何为未知维度的N维列表添加类型提示?
适配任意维度嵌套列表的类型提示方案
要实现能同时适配一维、二维乃至任意维度嵌套列表的类型提示,可以利用递归类型别名,这在Python 3.10及以上版本中得到支持。
定义递归嵌套列表类型
首先通过typing模块定义一个递归的类型别名,用来表示任意层级的嵌套列表:
from typing import TypeVar, Union, List T = TypeVar('T') # 递归类型:要么是单个元素T,要么是包含NestedList[T]的列表 NestedList = Union[T, List['NestedList[T]']]
扁平化函数的类型提示示例
用这个类型来标注扁平化函数的参数和返回值,就能完美适配各种维度的嵌套列表输入:
def flatten(nested: NestedList[T]) -> List[T]: flattened = [] for element in nested: if isinstance(element, list): flattened.extend(flatten(element)) else: flattened.append(element) return flattened
这个类型的优势在于:
- 自动适配
[1, 2](一维列表)、[[1, 2], [3, 4]](二维列表)甚至更深层级的嵌套结构 - 保留类型安全,类型检查工具(比如mypy)能识别最终返回的是元素类型为
T的一维列表
和numpy的维度标注不同,这个方案不需要预先固定维度数量,完全适配未知层级的嵌套列表场景。
内容的提问来源于stack exchange,提问作者Leandro 86
相关产品推荐
相关产品推荐

