On Mon, Aug 3, 2020 at 3:20 PM <[email protected]> wrote: > Ram Rachum wrote:. > > I notice that the random.sample function doesn't have a default behavior > > set when you don't specify k. This is fortunate, because we could make > > that behavior just automatically take the length of the first argument. > So > > we could do this: > > shuffled_numbers = random.sample(range(10, 10 ** 5)) > > What do you think? > > This is bad API design. The most likely user mistake is to omit the *k* > argument. We want that to be an error. It is common to sample from large > populations, we don't want the default to do anything terrible — for > example, you're in a Jupyter notebook and type "sample(range(10_000_000))" > and forget to enter the sample size. > > Also, having *k* default to the population size would be surprisingly > inconsistent given that choices() has a default k=1. API design principle: > don't have unexpectedly different defaults in related functions. >
Hmm, yes, I agree with both these points. I do think that `sample(x, k=len(x))` is cumbersome when `x` is not a variable but defined inline. But I guess I'll let this one go.
_______________________________________________ Python-ideas mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/[email protected]/message/V3A6KXSFJTKQ43MMBTNYKK4PQP4WNNGX/ Code of Conduct: http://python.org/psf/codeofconduct/
