如何在Python中创建随机字符串?
我需要它是数字然后字符重复,直到你完成这是我创建的
def random_id(length):
number = '0123456789'
alpha = 'abcdefghijklmnopqrstuvwxyz'
id = ''
for i in range(0,length,2):
id += random.choice(number)
id += random.choice(alpha)
return id
Run Code Online (Sandbox Code Playgroud) 我正试图从蒂姆斯在线评判中解决这个问题.要解决此问题,您需要生成一个包含1 000 000个小写拉丁字母的序列,并在1秒内将其写入标准输入.
使用C++或Java很容易解决这个问题.我这里有python解决方案:
import os
from random import randint
s = ''.join(chr(97 + randint(0, 25)) for i in range(1000000))
os.write(1, bytes(s, 'utf8'))
Run Code Online (Sandbox Code Playgroud)
需要1.7秒:
$ time python3.3 1219.py > /dev/null
real 0m1.756s
user 0m1.744s
sys 0m0.008s
Run Code Online (Sandbox Code Playgroud)
我得到了"超出时间限制"的结果.所以问题是"如何更快地做到这一点?"
UPD1:使用randint(97, 122)减少16ms的时间.现在是1.740s
UPD2: @Martijn Pieters的解决方案需要0.979秒,但它也没有通过测试.
UPD3 Martijn Pieters提出了一个非常好的解决方案,但它仍然很慢:
from sys import stdin
from random import choice
from string import ascii_lowercase
s = ''.join([choice(ascii_lowercase) for _ in range(1000000)])
stdout.write(s)
Run Code Online (Sandbox Code Playgroud)
需要0.924秒
from sys import stdout
from random import …Run Code Online (Sandbox Code Playgroud)