What is the best way to delete strings in a string list that that match certain pattern?

Peng Yu pengyu.ut at gmail.com
Fri Nov 6 11:16:58 EST 2009


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':
    l.remove(x)

print l



More information about the Python-list mailing list