2010-04-19 28 views

Respuesta

42

Hay una función shuffle en el módulo aleatorio. Tenga en cuenta que se mezcla en el lugar, por lo que primero debe convertir la cadena en una lista de caracteres, mezclarla y luego volver a unir el resultado.

import random 
l = list(s) 
random.shuffle(l) 
result = ''.join(l) 
+0

+1 para el "en el lugar". Por lo tanto, 'print random.shuffle (['a', 'b', 'c'])' devolverá 'None'. Tenemos que usar 'L = ['a', 'b', 'c']' y luego 'random.shuffle (L)' y 'print L' en su lugar. – Basj

66
>>> import random 
>>> s="abcdef123" 
>>> ''.join(random.sample(s,len(s))) 
'1f2bde3ac' 
-2

Una toma alternativa para barajar una cadena:

# Python < 3 
import random, array 

def shuffle_text(text): 
    if isinstance(text, unicode): 
     temp= array.array('u', text) 
     converter= temp.tounicode 
    else: 
     temp= array.array('c', text) 
     converter= temp.tostring 
    random.shuffle(temp) 
    return converter() 

añadí esta respuesta simplemente De forma complementaria; en mi servidor doméstico lento, es más rápido para cadenas de entrada pequeñas (pero la diferencia es muy pequeña), mientras que es más lento para cadenas más grandes.

Cuestiones relacionadas