2014-04-04 23 views

回答

3

你的代碼的問題是你在for循環中修改你的列表。其結果是,您以這種方式跳過元素,並在您的列表縮短後立即得到IndexError。

你可以用這個列表理解這樣做:

mylist = [val for val in mylist if val>=0] 
+0

輕微,但是這是一個列表compre不是一個生成器表達式。 – DSM

+0

當然,謝謝指出。固定。 – SzieberthAdam

0

您可以使用filter()lambda功能:

my_list = filter(lambda x : x >= 0, mylist) 
0

這是更好地使列表的副本沒有選定的項目,但如果你必須修改到位,試試這個:

def remove_negatives(list): 
    pos = 0 
    for item in list: 
     if item >= 0: 
      list[pos] = item 
      pos += 1 
    del list[pos:]