2017-07-07 87 views
1

我想過濾列表,將所有0移動到列表的末尾,然後按順序排列其他所有內容。如果條件滿足,Python擴展並在列表中彈出

所以我列舉了列表和一個項目等於0我想擴展名單,然後從其索引中刪除項目。我應該怎麼做?

這是我的代碼。

def move_zeros(array): 
    for index, item in enumerate(array): 
     if item == 0: 
      array.extend(item, array.pop(index)) 
    return array 
+1

您正在修改列表。這不是一個好主意。 –

回答

4

可以使兩個列表和添加他們

def move_zeros(array): 
    l1 = [v for v in array if v != 0] 
    l2 = [v for v in array if v == 0] 
    return l1 + l2 

這樣,你保持順序,還可以通過創建一個新的列表,你不修改到位名單,這通常不是一個好主意

什麼也應該將工作,如果有一個列表解析創建二層,只是產生一個零數組的長度等於你採取在原數組長度和L1的差值得到0的個數

l2 = [0] * (len(array) - len(l1)) 
+1

'哪裏'而不是'如果'? –

+1

你是對的,謝謝;) – chrise

+0

過濾這種方式確實刪除任何虛假的值,因爲他們也等於零 – sayth

相關問題