当前位置: 首页 > 面试题库 >

当python访问带有None值的2d列表时发出警告

濮阳
2023-03-14
问题内容

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

“意外的类型: (int,int) 可能的类型: (int,None) (slice,Iterable
[None])检查信息:此检查可检测函数调用表达式中的类型错误。由于动态调度和鸭子输入,此在有限但有用的情况下,这是可能的。函数参数的类型可以在文档字符串或Python
3函数注释中指定。”

我不知道哪里错了。如果我像0第一行一样将2d列表更改为全部初始化,则该警告消失了。有什么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)这次将显示类似的警告。



 类似资料:
  • 问题内容: def foo(a): a.append(1) if len(a) > 10: print a return a else: foo(a) 为什么此递归函数返回None(请参见下面的脚本)?我不太明白我在做什么错。 问题答案: 您不会在该子句中返回任何内容:

  • 关于下面的示例代码,虽然类测试内部的Test()构造函数是公共的,但类测试本身不是公共的,因此不能从它自己的包外部调用Test()构造函数。 这是否使public关键字变得多余?如果是这样,我想知道为什么javac在一个访问被隐式声明为default(“package private”)的类内部使用时,不发出关于public的冗余使用的警告? 需要说明的是:就是在我编译test.java的时候,我

  • 问题内容: 我正在学习理解力。我得到了print(x)部分(我认为。它打印通过了’in’测试的x的值),但是为什么以后还返回None列表呢? 问题答案: 您使用列表理解来打印列表中的项目,然后打印列表本身。尝试将列表分配给变量。 现在,该列表以x表示,没有打印出来。清单还在那里…

  • 我有一个JSON API响应,如下所示: 我正在使用Python并尝试访问响应中的第一个“下载”值。所以我需要从sales\u list(目录中的列表)开始 我见过关于在列表中的字典或嵌套字典中访问值的问题。但是我对如何在字典中的列表和列表中的字典之间/之间导航有点困惑。任何帮助都将不胜感激。

  • 在 Python 中,有一个特殊的常量 None(N 必须大写)。和 False 不同,它不表示 0,也不表示空字符串,而表示没有值,也就是空值。 这里的空值并不代表空对象,即 None 和 []、“” 不同: >>> None is [] False >>> None is "" False None 有自己的数据类型,我们可以在 IDLE 中使用 type() 函数查看它的类型,执行代码如下:

  • 在我的Dynamodb表中,该表包含分区键“id”和“created_at”作为排序键的“batchs”和一个带有“batch_status”的GSI 假设我想查询状态为“正在进行”、“新建”、“已完成”的批。