I would also prefer a `random.shuffled` function. The reason I didn't propose it is because there's usually more resistance for adding new functions. But in my view that'll be the best solution.
On Sat, Aug 1, 2020 at 9:17 PM Alex Hall <alex.moj...@gmail.com> wrote: > I agree that calling random.shuffle imperatively is annoying. But I don't > think your proposed solution is readable. You're not taking a sample. A > sample generally implies a strict subset, usually quite a small one. > > I've often thought there should just be a `random.shuffled()` function > which returns a shuffled copy, similar to `.sort()` and `sorted()` or > `.reverse()` and `reversed()`. > > On Sat, Aug 1, 2020 at 7:59 PM Ram Rachum <r...@rachum.com> wrote: > >> When writing some code now, I needed to produce a shuffled version of >> `range(10, 10 ** 5)`. >> >> This is one way to do it: >> >> shuffled_numbers = list(range(10, 10 ** 5)) >> random.shuffle(shuffled_numbers) >> >> >> I don't like it because (1) it's too imperative and (2) I'm calling the >> list "shuffled" even before it's shuffled. >> >> Another solution is this: >> >> shuffled_numbers = random.sample(range(10, 10 ** 5), k=len(range(10, 10 >> ** 5))) >> >> This is better because it solves the 2 points above. However, it is quite >> cumbersome. >> >> 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? >> >> >> Thanks, >> Ram. >> _______________________________________________ >> Python-ideas mailing list -- python-ideas@python.org >> To unsubscribe send an email to python-ideas-le...@python.org >> https://mail.python.org/mailman3/lists/python-ideas.python.org/ >> Message archived at >> https://mail.python.org/archives/list/python-ideas@python.org/message/OHLXVKIBMNSQO6BCFK6LEHSYNXDB6OQJ/ >> Code of Conduct: http://python.org/psf/codeofconduct/ >> >
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/RFJHHVAWYAMSRRD5ZYGH7VHAOKMNAR67/ Code of Conduct: http://python.org/psf/codeofconduct/