未使用变量的 "for in

0 投票
2 回答
509 浏览
提问于 2025-04-18 18:11

我需要用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)])

因为实现时需要先扫描两次来确定输出的长度;这两次扫描意味着任何生成器表达式最终都会变成一个列表。在这里使用列表推导式可以直接跳过这个转换,所以会更快。

撰写回答