[Tutor] For loop breaking string methods
bgailer at gmail.com
Mon Apr 26 22:06:32 CEST 2010
On 4/26/2010 3:38 PM, C M Caine wrote:
> Why does this not work:
By "work" you mean "do what I want it to do".
> >>> L = [' foo ','bar ']
> >>> for i in L:
> i = i.strip()
This creates a new local variable named i. It does not affect L. This
has nothing to do with loops nor is it strange behavior - it is expected
Consider the loopless equivalent:
>>> i = L
>>> i = i.strip()
[' foo ', 'bar ']
> >>> L
> [' foo ', 'bar ']
> >>> # note the leading whitespace that has not been removed.
> But this does:
> >>> L = [i.strip() for i in L]
> >>> L
> ['foo', 'bar']
> What other strange behaviour should I expect from for loops?
None - loops do not have "strange" behaviors.
Perhaps "unexpected" but that is a result of not understanding an aspect
of the language.
Chapel Hill NC
More information about the Tutor