errors = int(0)
for i in range(len(expectedData)):
if data[i] != expectedData[i]:
errors += int(binary_compare(data[i], expectedData[i]))
return errors
我有上面的代码,我试图用来为某些数据计算一些整数(错误数)。我已经将可能的所有内容都强制转换为整数,但是“错误+ = ...”行仍然附加了该值,而不是将其相加。
例如,如果我的答案应该是7,则可能会得到500002。(5 + 0 + 0 + .. + 2)。我以前从未遇到过。函数binary_compare也返回一个整数,但是对于为什么它不起作用我还是一无所知。
最佳答案
我认为该错误不在您的代码内,但是无论如何,在Python中,列表操作很少使用循环来完成,因为这着重于实现而不是目的。列表理解,生成器等是首选,并且还有许多内置和标准库函数可用于常见任务。
在您的情况下,我会将函数编写为
return sum(binary_compare(x, y) for x, y in zip(data, expectedData) if x != y)
如果您使用的是Python 2.x,则应使用
itertools.izip
而不是zip
。