我有 list Dsr

>>> Dsr
[59.10346189206572, 40.4211078871491, 37.22898098099725]
type(Dsr)
<type 'list'>

我需要计算最大值并将该值除以列表中的每个元素
dmax = numpy.max(Dsr)
RPsr = []
for p in xrange(Dsr):
      RPsr.append(float(Dsr[p]/dmax))

我有以下问题:

1)当我运行此循环时,我收到错误消息:
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
TypeError: an integer is required

2)是否可以以最优雅的列表理解方式转换循环?

最佳答案

之所以会出现异常,是因为xrange()接受int而不是list。您需要使用len():

for p in xrange(len(Dsr)):
                ^^^

由于您已经在使用NumPy,我的建议是像这样重写整个过程:
In [7]: Dsr = numpy.array([59.10346189206572, 40.4211078871491, 37.22898098099725])

In [8]: Dsr / Dsr.max()
Out[8]: array([ 1.        ,  0.68390423,  0.6298951 ])

关于python - Python : how resolve TypeError: an integer is required in a loop,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13919309/

10-13 02:35