Ответ 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]
Я получаю в качестве входных данных список строк и должен возвращать список с этими же строками, но в рандомизированном порядке. Я должен допускать дубликаты - одна и та же строка может появляться один раз или больше на входе и должна отображаться на выходе столько же раз.
Я вижу несколько способов "грубой силы" сделать это (используя циклы, не дай бог), один из которых я использую сейчас. Однако, зная Python, возможно, классный однострочный оператор выполнил свою работу, правильно?
>>> 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]
Похоже, что это самый простой способ, если не самый по-настоящему случайный (этот вопрос более подробно объясняет ограничения): http://docs.python.org/library/random.html#random.shuffle
Учитывая строковый элемент, это однострочный:
''.join([str(w) for w in random.sample(item, len(item))])
Вам нужно будет прочитать строки в массиве, а затем использовать алгоритм перетасовки. Я рекомендую Fisher-Yates shuffle