repetir - La mejor forma de aleatorizar una lista de cadenas en Python
lista random python (4)
Dado un artículo de cadena, aquí hay un trazador de líneas:
''''.join([str(w) for w in random.sample(item, len(item))])
Recibo como entrada una lista de cadenas y necesito devolver una lista con estas mismas cadenas pero en orden aleatorio. Debo permitir duplicados: la misma cadena puede aparecer una o más veces en la entrada y debe aparecer la misma cantidad de veces en la salida.
Veo varias formas de "fuerza bruta" de hacer eso (usando bucles, Dios no lo quiera), uno de los cuales estoy usando actualmente. Sin embargo, conociendo a Python, probablemente haya un buen trazador de líneas que haga el trabajo, ¿verdad?
Parece que esta es la forma más simple, si no la más aleatoria ( esta pregunta explica más completamente las limitaciones): http://docs.python.org/library/random.html#random.shuffle
Tendrás que leer las cadenas en una matriz y luego usar un algoritmo de mezcla. Recomiendo la mezcla de Fisher-Yates
>>> 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]