[英]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.