Python 2.6 rasgele dizeleri (bu iyi mi?)
İyi bir ölçeklendirme olabilir python rastgele string üretme daha pythonic bir yol bulmaya çalışıyorum. Genellikle, benzer bir şey görüyorum
''.join(random.choice(string.letters) for i in xrange(len))
Eğer uzun bir dize oluşturmak istiyorsanız bu berbat.
Rastgele düşünüyordum.bir süre getrandombits ve bit dizisi dönüştürmek için nasıl bulmaktan, sonra hex kodlama. Bu bitarray rastladım python 2.6 kullanarak belgelenmiş değil nesne. Nedense ben işe aldım ve gerçekten hızlı görünüyor.
Sadece 3 saniye içinde benim dizüstü 50mil rasgele bir dize oluşturur.
def rand1(leng):
nbits = leng * 6 1
bits = random.getrandbits(nbits)
uc = u"%0x" % bits
newlen = int(len(uc) / 2) * 2 # we have to make the string an even length
ba = bytearray.fromhex(uc[:newlen])
return base64.urlsafe_b64encode(str(ba))[:leng]
< / ^ hr .
edit
heikogerlach karakter sorunu neden bir tek sayı olduğuna dikkat çekti. Yeni kodu her zaman hex basamaklı bir çift sayı fromhex gönderilen emin olmak için ekledi.
Hala o kadar hızlı ki bunu yapmanın daha iyi bir yolu varsa merak ettim.
CEVAP
import os
random_string = os.urandom(string_length)
Nasıl python tamsayılar dizeleri dönüş...
Python - Birden çok Sınırlayıcı ile Sp...
En iyi şekilde Python dizeleri listesi...
Python biçim dizeleri, sayılar...
Seçime bağlı olarak yüzde (%) Python d...