Подтвердить что ты не робот

Лучший способ рандомизировать список строк в Python

Я получаю в качестве входных данных список строк и должен возвращать список с этими же строками, но в рандомизированном порядке. Я должен допускать дубликаты - одна и та же строка может появляться один раз или больше на входе и должна отображаться на выходе столько же раз.

Я вижу несколько способов "грубой силы" сделать это (используя циклы, не дай бог), один из которых я использую сейчас. Однако, зная Python, возможно, классный однострочный оператор выполнил свою работу, правильно?

4b9b3361

Ответ 1

>>> import random
>>> x = [1, 2, 3, 4, 3, 4]
>>> random.shuffle(x)
>>> x
[4, 4, 3, 1, 2, 3]
>>> random.shuffle(x)
>>> x
[3, 4, 2, 1, 3, 4]

Ответ 3

Учитывая строковый элемент, это однострочный:

''.join([str(w) for w in random.sample(item, len(item))])

Ответ 4

Вам нужно будет прочитать строки в массиве, а затем использовать алгоритм перетасовки. Я рекомендую Fisher-Yates shuffle