我正在使用python嘗試並從另一個列表中刪除相交的項目。所以下面是我的。Python從另一個列表中存在的列表中刪除項目,但保留不在該交集中的重複項
letter = ['a', 'a', 'i', 'd', 'e', 'i', 'a', 'b', 'b', 'c', 'o', 'g', 'a', 'f', 'f', 'i', 'g', 'i' ]
cons = ['b','c','d', 'f', 'g']
什麼,我要的是信從列表中刪除的利弊列表中的任何字母,但保留一切。所以下面是我想要得到的。
letter = ['a', 'a', 'i', 'e', 'i', 'a', 'o', 'a', i', 'i' ]
以下是我迄今爲止所嘗試的,但它不工作。
for i in letter[:]:
if i in cons:
letter.remove(i)
cons.remove(i)
和...
list(set(x) - set(y))
我只是想刪除列表的交集,並保留重複項不在第二列表中的第一個列表。到目前爲止,我嘗試過的所有內容都刪除了我想保留的第一個列表中的重複項。任何幫助是極大的讚賞!
而對於效率,這可能有助於將'cons'存儲爲'set' /'frozenset'(或者如果它很短,就像一個簡單的'str',它仍然是線性掃描時間,但是對於單個字符的會員測試比單獨的字符更快,列表中的單個字符串)。 – ShadowRanger
的確如此,我並不十分擔心這方面的效率,但這會大大提升。編輯添加 –