2014-03-04 138 views
1

我有一個函數,它將列表以及常規列表作爲參數。基本上,所有這些列表項都以一個唯一的編號開頭。我希望第二個列表的第一個元素針對第一個列表中每個單獨列表的第一個元素進行測試,如果它們匹配,則從listo1中刪除該列表。我做了一個簡單的例子並不在所有的工作:從另一個列表中刪除列表項

def deleteList(listo1, listo2): 
    if (listo2 in listo1): 
     listo1.remove(listo2) 
     print(listo1) 

def main(): 
    deleteList([[1000, 1],[2000, 2],[3000, 3]], [1000, 77]) 

所以我試圖讓listo2搜索listo1對於任何以1000元開始。在這種情況下,它應該從listo1中刪除第一個列表[1000,1]。我怎樣才能做到這一點?

回答

2

如果你只關心關於listo2中的第一個元素,您可以使類似於:

def deleteList(listo1, listo2): 
    for insidelist in listo1: 
     if listo2[0] == insidelist[0]: 
      listo1.remove(insidelist) 
    print(listo1) 

def main(): 
    deleteList([[1000, 1],[2000, 2],[3000, 3]], [1000, 77]) 
2

您可以使用列表中理解作爲一個過濾器,這樣

def deleteList(listo1, listo2): 
    return [item for item in listo1 if item[0] != listo2[0]] 

print deleteList([[1000, 1],[2000, 2],[3000, 3]], [1000, 77]) 
# [[2000, 2], [3000, 3]] 

如果你想這樣做是就地操作,你可以做到這一點

def deleteList(listo1, listo2): 
    listo1[:] = [item for item in listo1 if item[0] != listo2[0]] 

l1 = [[1000, 1],[2000, 2],[3000, 3]] 
deleteList(l1, [1000, 77]) 
print l1 
# [[2000, 2], [3000, 3]] 
相關問題