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



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



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

618   5  

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

Дана строка item, вот один-лайнер:

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

вам нужно будет прочитать строки в массив, а затем использовать алгоритм перетасовки. Я рекомендую Фишер-Йейтс перемешать

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

    Ничего не найдено.