簡體   English   中英

從python中的2個列表中刪除不匹配的項目

[英]removing unmatching items from 2 lists in python

如果list2中不存在,我需要從list1中刪除所有不匹配的項目

 List1 = ['dog', 'cat', 'bird']
 List2 = ['dog']

 for x in List2:
      for y in List1:
           if x!=y:
                List1.remove(x)

從list1中刪除一個項后,此循環停滯。 這個操作的正確代碼是什么

你可以用list comprehension做這樣的事情:

list_intersection = [item for item in List1 if item in List2]

這將迭代List1所有項目,並僅返回List2的元素。

list_intersection變量現在僅包含出現在兩個列表中的元素,忽略僅出現在其中一個列表中的項目。


如果您不介意在此交集過程中刪除重復項,則可以將兩個列表轉換為集合並執行set1.intersection( set2 ) 這將做同樣的事情 - 但請記住,將列表轉換為集合將刪除重復項。 完成后,您可以將設置轉換回列表。

l1 = [ 1, 1, 2, 3 ]
l2 = [ 2, 3, 4, 3 ]
l3 = set( l1 ).intersection( set( l2 ) )
l3 = list( l3 )

變量l3現在將等於[2, 3]因為它們是兩個原始列表中出現的唯一兩個元素。

你有沒有想過set()

就像是

set(List1) & set(List2)

暫無
暫無

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

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