![]() |
卖萌的红金鱼 · vs2015安装过程中应该选择哪些功能?-掘金· 1 年前 · |
![]() |
腹黑的墨镜 · 周小霞-广州大学大湾区环境研究院· 1 年前 · |
![]() |
纯真的石榴 · jstl maven依赖图形化-掘金· 1 年前 · |
![]() |
讲道义的米饭 · 403Bypasser - ...· 1 年前 · |
![]() |
想出家的乌龙茶 · kubernetes ingress ...· 1 年前 · |
切中要害,下面是将在PyCharm中引发错误的示例代码:
list1 = [0] * 5
list1[0] = ''
list2 = [0 for n in range(5)]
list2[0] = ''
然后,PyCharm在第2行和第4行都返回一个错误,如下所示:
Unexpected type(s):(int, str)Possible type(s):(SupportsIndex, int)(slice, Iterable[int])
运行代码不会导致任何错误,但当我编码时,PyCharm会不断地抛出上面的消息。我想知道为什么PyCharm会给出这个错误,我怎样才能用最干净的代码解决这个问题。谢谢。
编辑:抱歉,示例代码的第3行有一个拼写错误,已更正。(
list2 = [0 for n in range(0)]
应为
list2 = [0 for n in range(5)]
)
这只是来自代码检查工具的警告。
这基本上就是说,您创建了一个整数列表(包含5个等于
0
的项),然后用一个字符串替换一个整数。
这在python中不会产生错误,因为它对数据类型非常灵活,如果需要,您可以生成具有不同数据类型的列表。
它只是警告您,如果您稍后在一些代码中使用该列表,而这些代码只需要整数,而不是找到一个字符串项目,则可能会出现问题。
您可以通过禁用检查或直接创建字符串列表来解决此问题。
list1 = [""] * 5
list2 = ["" for n in range(0)]
或者也可以
list1 = ["0"] * 5
list2 = ["0" for n in range(0)]
或者,只要记住列表可能包含不同的数据类型,就可以忽略该警告。
除非已经用
n+1
元素初始化了列表,否则不能给
list2
这样的列表赋值。
list2 = [0 for n in range(0)]
与
list2 = []
相同。尝试使用
append
将元素添加到列表的末尾
>>> list2.append('')
>>> list2[0]
''
在您的示例中,PyCharm看到您的第一行,并认为列表的类型是
List[int]
。我的意思是它是一个整数列表。
您可能会知道您的列表不是整型的,并且可以通过以下方式接受任何值:
from typing import Any, List
list1: List[Any] = [0] * 5
list1[0] = ''
我使用键入模块只是为了解释这个想法。下面是一种简单的方式来声明list1只是一个包含所有内容的列表:
list1: list = [0] * 5
list1[0] = ''
还要考虑使用尽可能严格的类型化。它可能会帮助你防止bug。
如果您同时需要字符串和int,则使用以下命令:
from typing import List, Union
![]() |
卖萌的红金鱼 · vs2015安装过程中应该选择哪些功能?-掘金 1 年前 |
![]() |
腹黑的墨镜 · 周小霞-广州大学大湾区环境研究院 1 年前 |
![]() |
纯真的石榴 · jstl maven依赖图形化-掘金 1 年前 |