未使用变量的 "for in
我需要用y
中的字符生成一个长度为x
的字符串。
我最简单的方法是
''.join(random.choice(y) for i in xrange(x))
这个方法的问题是i
没有被用到。
有没有更好的方法来做到这一点呢?
2 个回答
0
我会使用随机库中的另一个函数,叫做random.sample。举个例子:
import string
from random import sample
y = string.ascii_letters
x = 10
xstr = "".join(sample(y, x))
这样就不需要用循环了...
4
没有更好的方法;你可以把变量命名为 _
,表示这个变量是被忽略的:
''.join(random.choice(y) for _ in xrange(x))
_
只是一个约定;有经验的程序员看到你的代码会明白这表示“没用到”,Python 对此也没有特别的要求。
从性能的角度来看,这里使用列表推导式会更快:
''.join([random.choice(y) for _ in xrange(x)])
因为实现时需要先扫描两次来确定输出的长度;这两次扫描意味着任何生成器表达式最终都会变成一个列表。在这里使用列表推导式可以直接跳过这个转换,所以会更快。