我把这个代码放在一起,生成一串11个随机可打印的ascii字符:
import random
foo=[]
for n in range(11):
foo.append(chr(random.randint(32,126)))
print "".join(foo)
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我不禁觉得可能有一种比称"追加"11次更有效的方法.有什么提示让它更像Pythonic?
使用列表理解:
foo = [chr(random.randint(32,126)) for _ in xrange(11)]
Run Code Online (Sandbox Code Playgroud)
你可以将它与str.join():
print ''.join([chr(random.randint(32,126)) for _ in xrange(11)])
Run Code Online (Sandbox Code Playgroud)
我在xrange()这里使用过,因为你不需要生成的列表range(); 只有序列.
快速演示:
>>> import random
>>> ''.join([chr(random.randint(32,126)) for _ in xrange(11)])
'D}H]qxfD6&,'
Run Code Online (Sandbox Code Playgroud)