"Stephen Nelson-Smith" <sanel...@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/
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor