fork download
  1. import functools
  2.  
  3. remove=lambda items,n=1:functools.reduce(lambda acc,item:(acc[1].update({item:1 if item not in acc[1] else acc[1][item]+1}),acc[0].append(item) if acc[1][item]<=acc[2] else None,acc)[2],items,([],{},n))[0]
  4.  
  5. orig=[1,2,1,1,3,2,3,3,2,4,4,4,5,5,5,"jim",6,"jim",6,"bob",6,"bob","bob","bob"]
  6. print(orig)
  7. print(remove(orig))
  8. print(remove(orig,2))
  9.  
Success #stdin #stdout 0.02s 9172KB
stdin
Standard input is empty
stdout
[1, 2, 1, 1, 3, 2, 3, 3, 2, 4, 4, 4, 5, 5, 5, 'jim', 6, 'jim', 6, 'bob', 6, 'bob', 'bob', 'bob']
[1, 2, 3, 4, 5, 'jim', 6, 'bob']
[1, 2, 1, 3, 2, 3, 4, 4, 5, 5, 'jim', 6, 'jim', 6, 'bob', 'bob']