python - 为什么 List 不能包含多种类型?
问题描述
您可以在元组或列表中混合类型。为什么不能在输入提示中指定?
>>> from typing import Tuple, List
>>> t = ('a', 1)
>>> l = ['a', 1]
>>> t2: Tuple[str, int] = ('a', 1)
>>> l2: List[str, int] = ['a', 1]
TypeError: Too many parameters for typing.List; actual 2, expected 1
解决方案
在类型论中,列表是包含一种类型值的同质结构。因此,List
只需要一种类型,并且该列表的每个元素都必须具有该类型。
但是,类型理论也提供了 sum 类型,您可以将其视为从某些固定类型集中选择的一个值的包装器。支持 sum 类型typing.Union
。要指定列表是int
和str
值的混合,请使用
List[Union[str, int]]
作为类型提示。
相比之下,元组是产品类型的一个示例,一种由一组固定类型组成的类型,其值是值的集合,来自产品类型中的每个类型。Tuple[int,int,int]
,Tuple[str,int]
并且Tuple[int,str]
都是不同的类型,通过产品中的类型数量和它们出现的顺序来区分。
推荐阅读
- php - 使用 Ajax 验证提交
- python - 在 Python 中复制 Jpeg
- matlab - 这行代码应该会产生指数服务时间,但我无法理解其背后的逻辑
- php - 感谢登录用户上传文件
- python - 安装 sqlite3 时 Heroku python 应用程序无法构建
- python-3.x - 我正在尝试将 python 网络应用程序部署到 Google App Engine 。它在本地工作,但我无法让它托管。在实例上出现构建错误
- metal - 旧的金属特征集表文档的可用性?
- javascript - 更准确的时间比较方法
- html - 无法在 html 文件上缩放 svg
- python - 如何在 Python 中创建有界 int?