Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python访问无值2d列表时出现警告_Python_Python 3.x_Pycharm_Warnings - Fatal编程技术网

python访问无值2d列表时出现警告

python访问无值2d列表时出现警告,python,python-3.x,pycharm,warnings,Python,Python 3.x,Pycharm,Warnings,我想在python中创建一个n*n列表,其中大多数元素初始化为None。然后我将在for循环中设置一些元素,但在我将对角线元素设置为0的行中,我在PyCharm中的[j]上得到了一个警告高亮显示,表示: 意外类型:(int,int)可能的类型:(int,None)(切片, Iterable[None])检查信息:此检查检测类型错误 在函数调用表达式中。由于动态分派和duck类型, 这在数量有限但有用的情况下是可能的 函数参数可以在DocString或Python 3中指定 函数注释。” 我不知道

我想在python中创建一个
n*n
列表,其中大多数元素初始化为None。然后我将在for循环中设置一些元素,但在我将对角线元素设置为
0
的行中,我在PyCharm中的
[j]
上得到了一个警告高亮显示,表示:

意外类型:(int,int)可能的类型:(int,None)(切片, Iterable[None])检查信息:此检查检测类型错误 在函数调用表达式中。由于动态分派和duck类型, 这在数量有限但有用的情况下是可能的 函数参数可以在DocString或Python 3中指定 函数注释。”

我不知道哪里错了。如果我将第一行中的2d列表全部初始化为
0
,则此警告消失。什么使
None
在这里特别

prev = [[None] * n for i in range(n)]
for i in range(n):
    for j in range(n):
        if i == j:
            prev[i][j] = 0
        ......

这只是一个警告,因此您的代码仍应运行

PyCharm试图通过告诉变量的类型来帮助您避免错误。然而,有时它会出错

此功能在函数中非常有用。例如:

def myfunction(x: str):
    return x

myfunction(1)
您应该在
1
上方看到相同的警告,因为它是
int
,但函数需要
str

在您的情况下,类型不是显式的,因此可能会发生PyCharm的错误判断

如果将
None
从您的代码更改为
1
或任何其他
int
,则表明警告已消失

prev = [[1] * n for i in range(n)]
for i in range(n):
    for j in range(n):
        if i == j:
            prev[i][j] = 0
                    ^
                    |
              Warning gone

如果将
None
更改为
'a'
或任何其他
str
,您将看到类似的警告,但带有
(int,str)
这一次。

在python 2.7中效果很好您的代码在
python 3.6.1中对我很好,在
python 3.5.5和
python 2.7.15
在Ubuntu 16.04中也很好,我在Windows 10 x64A中使用python 3.6.1和PyCharm Community Edition 2018.2时出现了类似的错误。