2010-04-19 16 views

cevap

42

Rastgele modülde shuffle numaralı bir işlev var. Yerinde yerinde karıştığını unutmayın, böylece ilk önce dizenizi bir karakter listesine dönüştürmeniz, karıştırmanız ve sonucu tekrar birleştirmeniz gerekir.

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

+1. Böylece 'print random.shuffle (['a', 'b', 'c'])' 'None'ı döndürecektir. Bunun yerine L = ['a', 'b', 'c'] 'sonra' random.shuffle (L) 've' print L' kullanmak zorundayız. – Basj

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

bir dize üreticimizin için alternatif almak:

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

Sadece uğruna bütünlük açısından bu cevabı ekledi; yavaş ev sunucumda, daha küçük dizeler için daha yavaş olsa da, küçük giriş dizeleri için daha hızlıdır (ancak fark çok küçüktür). "Yerinde" için