Python中的循环效率更高(单行?)

Dav*_*vid 0 python for-loop

我把这个代码放在一起,生成一串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?

Mar*_*ers 6

使用列表理解:

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)