given 2 lists: a = [3,4,5,5,5,6] b = [1,3,4,4,5,5,6,7] i want find "overlap": c = [3,4,5,5,6] i'd if extract "remainder" part of , b that's not in c. a_remainder = [5,] b_remainder = [1,4,7,] note: has 3 5's in , b has two. b has 2 4's in , has one. the resultant list c should have 2 5's (limited list b) , 1 4 (limited list a). this gives me want, can't think there's better way. import copy = [3,4,5,5,5,6] b = [1,3,4,4,5,5,6,7] c = [] elem in copy.deepcopy(a): if elem in b: a.pop(a.index(elem)) c.append(b.pop(b.index(elem))) # , b both contain "remainders" , c contains "overlap" on note, more accurate name i'm asking "overlap" , "remainder"? collection.counter available in python 2.7 can used implement multisets want. a = [3,4,5,5,5,6] b = [1,3,4,4,5,5,6,7] a_multiset = collections.counter(a) b_multiset = collections.counter(b) overlap...