Лучший способ рандомизации списка строк в Python
Я получаю в качестве входных данных список строк и должен вернуть список с этими же строками, но в рандомизированном порядке. Я должен учитывать дубликаты-одна и та же строка может появляться один или несколько раз на входе и должна появляться одинаковое количество раз на выходе.
Я вижу несколько способов "грубой силы" (используя петли, не дай бог), Один из которых я сейчас использую. Однако, зная Python, вероятно, есть классный однострочный лайнер, который выполняет эту работу, верно?
5 ответов:
>>> 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
вам нужно будет прочитать строки в массив, а затем использовать алгоритм перетасовки. Я рекомендую Фишер-Йейтс перемешать
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)
Comments