2011-05-30 28 views
6

Program yazıyorum ve python'da list numaralı telefondan string s harflerini karıştırmam gerekiyor. Mesela ben bir list gibi ler string arasında var:Python'da dizeleri karıştırmanın herhangi bir yolu var mı?

l = ['foo', 'biology', 'sequence'] 

Ve böyle bir şey istiyorum:

l = ['ofo', 'lbyoogil', 'qceeenus'] 

bunu yapmanın en iyi yolu nedir?

Yardımlarınız için teşekkürler! istediğini yapmak için bir işlev oluşturmak Bundan

>>> import random 
>>> x = "sequence" 
>>> l = list(x) 
>>> random.shuffle(l) 
>>> y = ''.join(l) 
>>> y 
'quncesee' 
>>> 

edebilirsiniz:

+0

http://stackoverflow.com/questions/1735561/oneliner-scramble-program – trutheality

cevap

18

Python

>>> from random import shuffle 

>>> def shuffle_word(word): 
... word = list(word) 
... shuffle(word) 
... return ''.join(word) 

listesi anlama yeni bir liste oluşturmak için kolay bir yoldur .. dahil pilleri vardır: benden önce bu gibi

>>> L = ['foo', 'biology', 'sequence'] 
>>> [shuffle_word(word) for word in L] 
['ofo', 'lbyooil', 'qceaenes'] 
+4

1 pilleri! Dikkatli onlar da normal 9v olanlar değil. –

+0

Liste kavraması her zaman en iyi yaklaşım olmayabilir, jeneratör ifadeleri veya eşlemeler daha iyi olabilir. Bu örnekte, “map()' için giderdim. – Johnsyweb

2

Sen random.shuffle kullanabilirsiniz.

4
import random 

words = ['foo', 'biology', 'sequence'] 
words = [''.join(random.sample(word, len(word))) for word in words] 
0

, ben random.shuffle() kullanmayı tercih ediyorum :

>>> import random 
>>> def mixup(word): 
...  as_list_of_letters = list(word) 
...  random.shuffle(as_list_of_letters) 
...  return ''.join(as_list_of_letters) 
... 
>>> map(mixup, l) 
['oof', 'iogylob', 'seucqene'] 
>>> map(mixup, l) 
['foo', 'byolgio', 'ueseqcen'] 
>>> map(mixup, l) 
['oof', 'yobgloi', 'enescque'] 
>>> map(mixup, l) 
['oof', 'yolbgoi', 'qsecnuee'] 

Ayrıca bakınız: dahil

İlgili konular