" for in"未使用的变量

时间:2014-08-22 14:27:02

标签: python list-comprehension

我需要使用x中的字符生成长度为y的字符串 我直截了当的做法是

''.join(random.choice(y) for i in xrange(x))

问题在于i未被使用 有更好的方法吗?

2 个答案:

答案 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))

不需要循环......