0

次のPythonコードの良い方法は何ですか:

          I = range(0,5000)     ## some list
          t = somevalue         ## for ex. 5    

          R = []     
          append1 = R.append     

          for i in I:      
              if i >= t:     
                 append1(1)
              else:
                 append1(0)

このコードは正常に動作しますが、これは良い方法ではないと思います。また、append メソッドが遅すぎます。

ありがとう!

4

3 に答える 3

3

リスト内包表記を使用できます。

R = [int(val>=t) for val in I]
于 2013-10-10T12:26:15.620 に答える
1

リスト内包表記が必要なようです:

>>> I = range(0,10)
>>> t = 3
>>> R = [1 if i>=t else 0 for i in I]
>>> R
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1]
于 2013-10-10T12:26:17.277 に答える
0

必要なものによっては、これが代替手段になる場合があります。

import numpy as np
I = np.arange(0,500)
t = 253
R = 1*(I >= t)

R がリストである必要がある場合は、次のように追加できます。R.tolist()

于 2013-10-10T12:38:34.713 に答える