使用itertools生成所有n位数字,边界在第1位数的范围内

时间:2014-06-14 19:26:36

标签: python itertools

我想生成所有n位数字,这样第一个数字从1到7,其余数字可以在0到9之间。

我为一般的7位数发生器编写了生成器,但我不知道如何限制第一个数字只能达到7位。

import itertools
roll = []
for i in itertools.product([str(i) for i in xrange(1,10)], repeat=7):
    roll.append(''.join(i))
print roll

1 个答案:

答案 0 :(得分:2)

这是一个有效的解决方案。第一步是创建一个6位数字。然后,我用1到7之间的所有数字作为前缀,并将其附加到roll

roll = []
for i in itertools.product([str(j) for j in xrange(1,10)], repeat=6):
    roll += [str(j)+''.join(i) for j in xrange(1,8)]
print roll

请注意,生成此序列根本不需要itertools,只需简单的单行即可:

roll = [str(i) for i in xrange(1000000, 8000000)]