[Tutor] Why are these results different?
Alan Gauld
alan.gauld at btinternet.com
Thu Nov 19 09:57:30 CET 2009
"Stephen Nelson-Smith" <sanelson at gmail.com> wrote
> I'm seeing different behaviour between code that looks to be the same.
> It obviously isn't the same, so I've misunderstood something:
In the first instance the two for-loops are inside the chain() call.
In the second you apply the chain inside the loops, so it only
applies to one item at a time.
>>>> logs = itertools.chain.from_iterable(glob.glob('%sded*/%s*%s.gz' %
>>>> (source_dir, log, date)) for log in log_names for date in log_dates)
>>>> for log in logs:
> ... print log
> ...
> /Volumes/UNTITLED 1/ded1/access_log-20091105.gz
> /Volumes/UNTITLED 1/ded2/access_log-20091105.gz
> However:
>
> for date in log_dates:
> for log in log_names:
> logs = itertools.chain.from_iterable(glob.glob('%sded*/%s*%s.gz'
> % (source_dir, log, date)))
>
> Gives me one character at a time when I iterate over logs.
The final result is whatever chain() evaluated for the final loop
iteration.
Apparently a string.
HTH,
--
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/
More information about the Tutor
mailing list