On Fri, Sep 19, 2014 at 9:52 AM, Roy Smith <r...@panix.com> wrote: > In article <mailman.14103.1411047208.18130.python-l...@python.org>, > Chris Angelico <ros...@gmail.com> wrote: > >> The one thing you can rely on (and therefore must comply with, when >> you design an iterable) is that iteration will hit every element >> exactly once. > > Does it actually say that somewhere? For example: > > for i in bag.pick_randomly_with_replacement(n=5): > print i > > shouldn't do that.
When you pick randomly from a population, you create a new population, which may have duplicates compared to the original. (For efficiency's sake it probably won't all actually exist immediately, but conceptually it does exist.) That's what you're iterating over - not the bag itself. ChrisA -- https://mail.python.org/mailman/listinfo/python-list