Я получаю в качестве входных данных список строк, и мне нужно вернуть список с теми же строками, но в случайном порядке. Я должен разрешить дубликаты - одна и та же строка может появляться на входе один или несколько раз и должна появляться на выходе одинаковое количество раз.
Я вижу несколько способов "грубой силы" сделать это (используя петли, не дай бог), один из которых я сейчас использую. Тем не менее, зная 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
С учетом строки item , вот одна строка:
''.join([str(w) for w in random.sample(item, len(item))])
Вам нужно будет прочитать строки в массив, а затем использовать алгоритм перемешивания. Я рекомендую Fisher-Yates shuffle
import random b = [] a = int(input(print("How many items you want to shuffle? "))) for i in range(0, a): n = input('Please enter a item: ') b.append(n) random.shuffle(b) print(b)