1

私はリスト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) 最も洗練されたリスト内包表記でループを変換することは可能ですか?

4

3 に答える 3

5

ではなくxrange()を取るため、例外が発生します。使用する必要があります:intlistlen()

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 ])
于 2012-12-17T17:52:54.030 に答える
3

私があなたを正しく理解していれば、これが必要です:

>>> dsr = [59.10346189206572, 40.4211078871491, 37.22898098099725]
>>> the_max = max(dsr)
>>> [i/the_max for i in dsr] 
[1.0, 0.6839042349323938, 0.6298950990211796]
于 2012-12-17T17:52:49.520 に答える
1

おそらく、実際のリストを反復処理したいでしょう。あなたはそのために使用しませんxrange

for p in Dsr:
    RPsr.append(float(p/dmax))

そして、リスト内包表記がより簡単な方法であることは間違いありません。

RPsr = [p/dmax for p in Dsr]
于 2012-12-17T17:54:26.673 に答える