2010-04-19 47 views

Trả lời

42

Có chức năng shuffle trong mô-đun ngẫu nhiên. Lưu ý rằng nó xáo trộn tại chỗ, vì vậy trước tiên bạn phải chuyển đổi chuỗi của bạn thành một danh sách các ký tự, trộn nó, sau đó tham gia lại kết quả.

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

+1 cho "tại chỗ". Do đó 'print random.shuffle (['a', 'b', 'c'])' sẽ trả về 'Không có'. Chúng ta phải sử dụng 'L = ['a', 'b', 'c']' rồi 'random.shuffle (L)' và 'in L' để thay thế. – Basj

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

Một mất thay thế cho xáo trộn một chuỗi:

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

tôi thêm câu trả lời này chỉ cho đầy đủ vì lợi ích; trên máy chủ gia đình chậm của tôi, nó là nhanh hơn cho các chuỗi đầu vào nhỏ (nhưng sự khác biệt là rất nhỏ), trong khi nó là chậm hơn cho các chuỗi lớn hơn.

Các vấn đề liên quan