2010-04-19 11 views
32

Ich bin auf der Suche nach einer Funktion oder einem kurzen Programm, das eine Zeichenfolge (bis zu 10 Buchstaben) erhält und es mischt.
danke Arielshuffle string in python

Antwort

42

Es gibt eine Funktion shuffle in dem zufälligen Modul. Beachten Sie, dass es in-Place gemischt wird, also müssen Sie zuerst Ihre Zeichenfolge in eine Liste von Zeichen konvertieren, mischen und dann erneut an das Ergebnis anschließen.

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

+1 für die "In-Place". So wird 'print random.shuffle (['a', 'b', 'c'])' '' None' zurückgeben. Wir müssen 'L = ['a', 'b', 'c']' und dann 'random.shuffle (L)' und 'print L' verwenden. – Basj

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

Eine alternative nehmen für schlurfenden eine Zeichenfolge:

# 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() 

Ich habe diese Antwort nur der Vollständigkeit halber; auf meinem langsamen Home-Server ist es schneller für kleine Eingabe-Strings (aber der Unterschied ist sehr klein), während es für größere Strings langsamer ist.