Skip to main content
 首页 » 编程设计

Python:如何解决TypeError:循环中需要一个整数

2025年05月04日14unruledboy

我有一个列表 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 ])