我试图计算两个列表的元素划分:
outCount = [0,2,1,3]
PR_old = [0.25,0.25,0.25,0.25]
inSum = 0
for j in range(len(outCount)):
if outCount[j] == 0:
continue
inSum += PR_old[j]/outCount[j]
我收到以下错误:
TypeError: unsupported operand type(s) for /: 'float' and 'list'
答案 0 :(得分:3)
除了for
循环的错误缩进之外,您的代码还可以。它应该是这样的:
outCount = [0,2,1,3]
PR_old = [0.25,0.25,0.25,0.25]
inSum = 0
for j in range(len(outCount)):
if outCount[j] == 0:
continue
inSum += PR_old[j]/outCount[j]
print inSum
但是,有更多的Pythonic方法可以做到这一点。你真的不需要那个索引变量j
。您可以使用zip()
:
inSum = 0
for u, v in zip(PR_old, outCount):
if v:
inSum += u / v
或者在生成器表达式中执行基本相同的操作并使用内置的sum()
函数执行添加:
inSum = sum(u / v for u, v in zip(PR_old, outCount) if v)
FWIW,inSum
的最终值为0.458333333333
(在Python 2.6.6上测试的代码)
答案 1 :(得分:0)
除了明显的缩进错误,我无法重现您的问题。具体做法是:
2>>> outCount = [0,2,1,3]
2>>> PR_old = [0.25,0.25,0.25,0.25]
2>>> inSum = 0
2>>> for j in range(len(outCount)):
2... if outCount[j] == 0:
2... continue
2... inSum += PR_old[j]/outCount[j]
2...
2>>> print(inSum)
0.458333333333
(提示前面的2
只是为了表明我使用的是Python 2,但没关系,它在Python 3中的工作原理相同。)
请复制并粘贴此代码(当然将编辑提示编辑)到Python交互式解释器中,并告诉我们您在此代码中向我们显示的错误信息,您将收到报告的错误。