> That is a nice solution. > > But, how about modifying the list in place? > > That is, l would become ['c', 'D']. > >> >>> 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']
Well...changing the requirements midstream, eh? ;-) You can just change that last item to be a reassignment if "l" is all you care about: >>> l = [x for x in l ...] Things get a bit hairier if you *must* do it in-place. You'd have to do something like this (untested) for i in xrange(len(l), 0, -1): if l[i-1].lower() in s: del l[i-1] which should do the job. -tkc -- http://mail.python.org/mailman/listinfo/python-list