Can you not just use
https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.random_permutation
?
On Saturday, August 1, 2020 at 2:26:23 PM UTC-4 Ram Rachum wrote:
> 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....@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...@python.org
>>> To unsubscribe send an email to python-id...@python.org
>>> https://mail.python.org/mailman3/lists/python-ideas.python.org/
>>> Message archived at
>>> https://mail.python.org/archives/list/python...@python.org/message/OHLXVKIBMNSQO6BCFK6LEHSYNXDB6OQJ/
>>>
>>> <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/RG346EKJMPYZAI6PHCCZRKOIJUIML3HB/
Code of Conduct: http://python.org/psf/codeofconduct/