Pma*_*son 6 python warnings types pycharm
我正在尝试使用嵌套的for循环遍历对每个列表的每个元素进行操作的列表列表。我从PyCharm收到警告,尽管第二个for循环中的计数器类型是从范围值派生的,但它的类型不确定是整数。该代码正确执行,为什么会有警告?
def get_vote_fraction(cl_count, ag_vector):
v_f_vector = [[0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0, 0]]
for b in range(0, len(v_f_vector)):
for c in range(0, len(v_f_vector[b])):
v_f_vector[b][c] = f"{(ag_vector[b][c] / cl_count): .2F}"
return v_f_vector
aggregated_vector = [[0, 8, 0, 6], [0, 1, 0, 0, 0, 0, 9, 0], [0, 0, 10, 0], [0, 10, 0, 0, 0]]
class_count = 10
vote_fraction = get_vote_fraction(class_count, aggregated_vector)
print(vote_fraction)
Run Code Online (Sandbox Code Playgroud)
如预期的那样输出为[['0.00','0.80','0.00','0.60'],['0.00','0.10','0.00','0.00','0.00','0.00',' 0.90','0.00'],['0.00','0.00','1.00','0.00'],['0.00','1.00','0.00','0.00','0.00']]
我收到一个警告,v_f_vector [b] [c]中的c可能属于意外类型(int,str),它表示c没有充分定义为整数。我不愿提出有关PyCharm的问题,因为我可能缺少一些简单的东西。有人看到我在想什么吗?
你应该使用enumerate()
例子:
iterable = [1,2,3,4]
for i, v in enumerate(iterable):
print(i,v)
Run Code Online (Sandbox Code Playgroud)
预期产出
0 1
1 2
2 3
3 4
Run Code Online (Sandbox Code Playgroud)
代替
for x in range(0, len(iterable)):
print(x, iterable[x])
Run Code Online (Sandbox Code Playgroud)
抱歉,这并不是您问题的真正答案,但这是为了以这种方式更具可读性,此外,枚举将始终为您提供索引和值,或者如果它是字典,则为键和值。
还值得注意的是,将列表嵌套在字典中,然后为每个列表提供一个特定的键,以便您可以访问它们,会更具人类可读性。
仅供思考
为了更加清楚起见,假设您有 4 个向量:向量 a、b、x 和 y。您可以将它们各自的列表放在它们自己的字典键中,然后使用它们的键访问它们。
归档时间: |
|
查看次数: |
89 次 |
最近记录: |