You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python函数返回内层固定3个字符串的列表的列表,如何正确标注类型提示?

如何为返回固定长度内层列表的列表指定类型提示

你需要明确标注返回值是列表的列表,且每个内层列表恰好包含3个字符串,以下是针对不同Python版本的解决方案:

Python 3.12+(推荐)

Python 3.12支持PEP 646引入的泛型展开和固定长度列表类型,可直接写出精确的类型提示:

def foobar() -> list[[str, str, str]]:
    return [["str1", "str2", "str3"], ["str4", "str5", "str6"]]

这里[str, str, str]明确表示内层列表是包含3个字符串的固定长度列表,外层list[...]则表示由这类列表组成的列表。

Python 3.9-3.11

由于这几个版本的标准库类型系统不直接支持固定长度列表的标注,可借助typing_extensions库的FixedSizeList来实现精确类型提示:

  1. 先安装依赖:pip install typing_extensions
  2. 编写代码:
from typing import List
from typing_extensions import FixedSizeList

def foobar() -> List[FixedSizeList[str, 3]]:
    return [["str1", "str2", "str3"], ["str4", "str5", "str6"]]

FixedSizeList[str, 3]会告诉类型检查工具(如mypy、pyright),内层列表必须是包含3个字符串的列表,既匹配实际返回的结构,又明确了长度约束。

备选方案(仅作文档说明,无强类型检查)

如果暂时无法引入额外库,可通过Annotated添加长度元数据,用于文档提示:

from typing import List, Annotated

def foobar() -> List[Annotated[list[str], "固定长度为3"]]:
    return [["str1", "str2", "str3"], ["str4", "str5", "str6"]]

这种方式不会被类型检查工具强制执行长度约束,但能清晰表达你的意图。

为什么你之前的写法不合适

  • 初始的List[List[str]]仅说明内层是字符串列表,但无法体现固定长度的约束;
  • 用List[Tuple[str, str, str]]虽然能指定长度,但返回值实际是列表而非元组,类型提示与实际数据结构不匹配,会误导类型检查工具和其他开发者。

内容的提问来源于stack exchange,提问作者user25051166

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 17:24:58