How about using dictionaries? I didn't expect improvement speedwise. I was wrong. That's nothing new: I've been wrong before!
def f8(L,e):
....d = {}
....# The value could be anything, really
....d[e.lower()] = d[e.upper()] = True
....L = [x for x in L if not x in d]
Timings on my machine:
f7 0.43 - 0.48
f8 0.28 - 0.33
Comment
This solution works for lists of single characters only! Sorry!
Parent comment
How about using dictionaries? I didn't expect improvement speedwise. I was wrong. That's nothing new: I've been wrong before! def f8(L,e): ....d = {} ....# The value could be anything, really ....d[e.lower()] = d[e.upper()] = True ....L = [x for x in L if not x in d] Timings on my machine: f7 0.43 - 0.48 f8 0.28 - 0.33