0
alpha = [0,1,2,3,4,5,6,7,8,9]

for a in alpha:
    for b in alpha:
        for c in alpha:
            for d in alpha:
                print str(a) + str(b) + str(c) + str(d)

上面的代码将生成 0000 到 9999 之间的所有数字。但是,我不喜欢代码的结构方式。假设我想这样做以产生最大十位数的数字;这将需要 10 个for 循环。是否有另一种方法可以实现相同的结果,而不必插入无数的for 循环

4

3 回答 3

6

显而易见的方式:

for i in xrange(10000):        # or range if python 3
    print "{0:04d}".format(i)

您还可以将 with 指定为参数:

for i in xrange(10000):        # or range if python 3
    print "%0*d"%(4,i)
于 2013-04-25T00:02:58.640 回答
2

我不确定你是想要combinations_with_replacement还是product. 我认为是后者,但是……用 2 或 3 试试它们,看看你要的是哪一个。

for combination in itertools.combinations_with_replacement(alpha, 3):
    print ''.join(map(str, combination))

for element in itertools.product(alpha, repeat=3):
    print ''.join(map(str, element))

虽然我可能会从字符串中生成组合,而不是从整数中生成它们只是为了将它们转换为字符串:

alpha = '0123456789'
for combination in itertools.combinations_with_replacement(alpha, 4):
    print ''.join(combination)
于 2013-04-25T00:01:30.650 回答
0
expect_len = 10
max_val = 10**expected_len -1
my_list = ["%0*d"%(expect_len,val) for val in xrange(0,max_val+1)]

我认为至少

于 2013-04-25T00:02:02.733 回答