为什么要执行以下代码:
nans
告诉我这个吗?
意外的类型: (int,int) 可能的类型: (int,无) (切片,可迭代[无]) ...
答案 0 :(得分:4)
摆脱这种警告的一种简单的解决方法是在v
变量上添加类型提示:
v: list = [None for i in range(3)]
v[-1] = 0
PyCharm将其视为v: list[Any]
,并允许您分配任何类型的值而不会发出警告。
答案 1 :(得分:3)
根据[Python 3.Docs]: Built-in Types - Lists(强调是我的):
列表是可变序列,通常用于存储同类项目的集合(精确的相似程度会因应用程序而异)。
int 和 NoneType 被认为是同质的(通过 PyCharm 的代码检查),因此发出警告。解决这个问题的最简单方法是在列表中添加 int s:
v = [0 for _ in range(3)] # [0] * 3 # Shorter
v[-1] = 0
作为替代方案,您可以将元组用作异构项容器(如@Jeyekomon所指出的),但请记住,元组是不可变的(一旦创建,就不能更改)