这是一个可以用Sequence[Sequence[str]]注释的值的典型示例:

[
    ['This', 'is', 'the', 'first', 'tokenized', 'sentence', '.'],
    ['And', 'this', 'is', 'the', 'second', 'one', '.'],
]

我已经知道了string is a valid type for annotation Sequence[str]个,从宽松地说,在Python世界里,有strings are sequences of strings个.Does that work recursively?字符串是否也是批注Sequence[Sequence[str]]等的有效类型?

我会说yes,遵循Python逻辑,但我会说no,遵循常识.我不知道如何正确地测试它.

推荐答案

我们在Python glossary中有一个序列的定义:

sequence

支持高效元素访问的迭代器 通过__getitem__()特殊方法的整数索引,并定义一个 __len__()方法,返回序列的长度.一些内置的序列类型有liststrtuplebytes.请注意 DICT也支持__getitem__()__len__(),但被认为是 映射而不是序列,因为查找使用任意 不可变键,而不是整数.

当然,str满足上述所有要求,但它也是自递归的,这意味着它的__getitem__()返回自身的一个实例.无论我们try 深入到什么程度,字符串序列元素本身都将是字符串序列.从 comments 中可以明显看出,不同的工具可能会对它进行不同的处理,但纯粹从定义来看,str是一个无限嵌套的序列序列.

这可能看起来不太直观,但这与以下情况大致相同:

s = "python"
print(s[1][0][0][0])

如果你不认为这会失败,那么Sequence[Sequence[str]]也不应该失败.

Python相关问答推荐

当多个值具有相同模式时返回空

连接两个具有不同标题的收件箱

max_of_three使用First_select、second_select、

标题:如何在Python中使用嵌套饼图可视化分层数据?

如何在Django基于类的视图中有效地使用UTE和RST HTIP方法?

如何在solve()之后获得症状上的等式的值

Python,Fitting into a System of Equations

如何禁用FastAPI应用程序的Swagger UI autodoc中的application/json?

matplotlib图中的复杂箭头形状

如何过滤组s最大和最小行使用`transform`'

获取git修订版中每个文件的最后修改时间的最有效方法是什么?

Pandas在rame中在组内洗牌行,保持相对组的顺序不变,

Python日志(log)库如何有效地获取lineno和funcName?

read_csv分隔符正在创建无关的空列

以极轴表示的行数表达式?

文本溢出了Kivy的视区

如何在Python中创建仅包含完整天数的月份的列表

如何在python tkinter中绑定键盘上的另一个回车?

如何使用Polars从AWS S3读取镶木地板文件

如何通过函数的强式路径动态导入函数?