2013-10-10 35 views
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方法太慢了。

謝謝!

+0

由於原地替換,追加速度很慢。找到創建動態列表的方法。 – Rorschach

回答

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] 
3

你可以使用列表理解:

R = [int(val>=t) for val in I] 
0

根據你所需要的,這可能是一種替代方案:

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

如果R需要列表,您可以添加:R.tolist()