![]() |
Newbie question about list method remove
Why is this:
>>> li2 =['this.txt', 'that.txt', 'April04', 'more.txt'] >>> for item in li2: if ".txt" in item: li2.remove("%s" %item) >>> li2 ['that.txt', 'April04'] I would think that 'that.txt' would be removed as well. Where am I wrong? TIA |
Re: Newbie question about list method remove
Try this,
> >>> li2 =['this.txt', 'that.txt', 'April04', 'more.txt'] > >>> for item in li2[:]: #Make a copy of the list > if ".txt" in item: > li2.remove("%s" %item) > >>> li2 > ['that.txt', 'April04'] Mike "Sean Berry" <sean_berry@cox.net> wrote in message news:myemc.69648$Jy3.5301@fed1read03... > Why is this: > > >>> li2 =['this.txt', 'that.txt', 'April04', 'more.txt'] > >>> for item in li2: > if ".txt" in item: > li2.remove("%s" %item) > >>> li2 > ['that.txt', 'April04'] > > I would think that 'that.txt' would be removed as well. Where am I wrong? > > TIA > > |
Re: Newbie question about list method remove
In Python you must think "differently" than in
other programming languages. li2=[f for f in li2 if not f.endswith('.txt')] for your specific example or in Python 2.2 and earlier li2=[f for f in li2 if f.count('.txt') == 0] for the more general .txt ANYWHERE in the string or in Python 2.3 li2=[f for f in li2 if not '.txt' in f] Larry Bates Syscon, Inc. "Sean Berry" <sean_berry@cox.net> wrote in message news:myemc.69648$Jy3.5301@fed1read03... > Why is this: > > >>> li2 =['this.txt', 'that.txt', 'April04', 'more.txt'] > >>> for item in li2: > if ".txt" in item: > li2.remove("%s" %item) > >>> li2 > ['that.txt', 'April04'] > > I would think that 'that.txt' would be removed as well. Where am I wrong? > > TIA > > |
| All times are GMT. The time now is 02:29 PM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.