> I have a list like > e = ['a', 'b', 'e'] > and another list like > l = ['A', 'a', 'c', 'D', 'E'] > I would like to remove from l all the elements that appear in e > case-insensitive. That is, the result would be > r = ['c', 'D'] > > What is a *nice* way of doing it?
Well, it's usually advantageous (for speed purposes) to make a set out of your lookup data. One can then use it for a list comprehension something like >>> e = ['a', 'b', 'e'] >>> l = ['A', 'a', 'c', 'D', 'E'] >>> s = set(e) >>> [x for x in l if x.lower() not in s] ['c', 'D'] This presumes that "e" is all lowercase letters. Otherwise, you can force it with s = set(c.lower() for c in e) -tkc -- http://mail.python.org/mailman/listinfo/python-list