[英]Remove common elements between two list with repeated elements
我需要你的幫助,因為我對這個問題有點困惑。
我有兩個包含重復元素的列表:
L = [1,2,5,2,4,1,9]
S =[4,2,9,1]
我想得到兩個列表之間的“差異”,就像我做LS = LS
,結果應該是LS = [1,2,5]
。 我知道l2
將始終是L
的子集,因此S
永遠不會有L
不存在的值。
請注意,僅從L
刪除了一個1
和一個2
,因為S
只有一個1
和一個2
。 L
可以有元素重復n
次,而不僅僅是 2 次。
你知道是否有一種“簡單”的方法來做到這一點? 我不想得到一個O(n^2)
程序。
非常感謝!
使用collections.Counter (Python 的multi-set版本)
from collections import Counter
L = [1, 2, 5, 2, 4, 1, 9]
S = [4, 2, 9, 1]
LS = list((Counter(L) - Counter(S)).elements())
print(LS)
輸出
[1, 2, 5]
這種方法的整體復雜度是O(n)
。
你可以使用這個:
l = [1, 2, 5, 2, 4, 1, 9]
s = [4, 2, 9, 1]
for i in range(len(l)-1,-1,-1):
if l[i] in s:
s.remove(l[i])
l.pop(i)
print(l)
但我不知道它的復雜性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.