我需要使用x
中的字符生成长度为y
的字符串
我直截了当的做法是
''.join(random.choice(y) for i in xrange(x))
问题在于i
未被使用
有更好的方法吗?
答案 0 :(得分:4)
没有更好的方法;您可以将变量命名为_
以表示它被忽略:
''.join(random.choice(y) for _ in xrange(x))
_
只是一个惯例;经验丰富的程序员阅读您的代码将理解它表示“未使用”'在这里,Python无论如何都不在乎。
从性能角度来看,使用列表推导恰好更快:
''.join([random.choice(y) for _ in xrange(x)])
因为实现需要两次扫描才能首先确定输出长度;这种双重扫描意味着任何生成器表达式都会变成一个列表。在这里使用列表推导可以缩短转换速度并且速度更快。
答案 1 :(得分:0)
我会使用随机包中的一个不同的函数random.sample。一个例子:
import string
from random import sample
y = string.ascii_letters
x = 10
xstr = "".join(sample(y, x))
不需要循环......