What is the best way to delete strings in a string list that that match certain pattern?
Robert P. J. Day
rpjday at crashcourse.ca
Fri Nov 6 17:42:45 CET 2009
On Fri, 6 Nov 2009, Peng Yu wrote:
> On Fri, Nov 6, 2009 at 3:05 AM, Diez B. Roggisch <deets at nospam.web.de> wrote:
> > Peng Yu schrieb:
> >> Suppose I have a list of strings, A. I want to compute the list (call
> >> it B) of strings that are elements of A but doesn't match a regex. I
> >> could use a for loop to do so. In a functional language, there is way
> >> to do so without using the for loop.
> > Nonsense. For processing over each element, you have to loop over them,
> > either with or without growing a call-stack at the same time.
> > FP languages can optimize away the stack-frame-growth (tail recursion) - but
> > this isn't reducing complexity in any way.
> > So use a loop, either directly, or using a list-comprehension.
> What is a list-comprehension?
> I tried the following code. The list 'l' will be ['a','b','c'] rather
> than ['b','c'], which is what I want. It seems 'remove' will disrupt
> the iterator, right? I am wondering how to make the code correct.
> l = ['a', 'a', 'b', 'c']
> for x in l:
> if x == 'a':
> print l
list comprehension seems to be what you want:
l = [i for i in l if i != 'a']
Robert P. J. Day Waterloo, Ontario, CANADA
Linux Consulting, Training and Kernel Pedantry.
Web page: http://crashcourse.ca
More information about the Python-list