簡體   English   中英

從列表列表中排除Python

[英]Exclude items from list of lists Python

我有下一個清單

testList = []

testList.append([0,-10])
testList.append([-12,122])
testList.append([13,172])
testList.append([17,296])
testList.append([-10,80])
testList.append([-16,230])
testList.append([-18, 296])
testList.append([-2, -8])
testList.append([-5,10])
testList.append([2,-4])

和另一個包含前一個列表中元素的列表:

m1 = []
m1.append([0, -10])
m1.append([13, 172])

然后我嘗試使用下一個語句從列表testList獲取一個子testList

[element for i, element in enumerate(testList) if i not in m1]

但我獲得與testList相同的列表。

我怎樣才能做到這一點?

問題在於你使用枚舉。 我只是一個整數,因此永遠不會在列表中只有列表。 嘗試這個:

[element for element in testList if element not in m1]

如果您不關心列表中的順序,則可以使用集合

# result will be a set, not a list
not_in_testlist = set(testlist) - set(m1) 

如果您希望結果再次成為列表:

 # result will be a list with a new order
not_in_m1 = list(set(testlist) - set(m1))

請注意,使用集合將丟失原始列表的順序,因為集合是無序類型(它們在引擎蓋下使用散列)。

如果您需要保留訂單,那么Andrew Allaire的回答是正確的:

# result is a list, order is preserved
not_in_testlist = [e for e in testlist if e not in m1] 

試試這個:

def clean_list(my_list, exclusion_list):

    new_list = []
    for i in my_list:
        if i in exclusion_list:
            continue
        else:
            new_list.append(i)

    return new_list

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM