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 桁のサイズの数値を生成するためにこれを実行したいとしましょう。これには 10の for loopsが必要です。無数のfor ループを挿入することなく、同じ結果を達成できる別の方法はありますか?

4

3 に答える 3

6

The obvious way:

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

You can also specify the with as an argument:

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 に答える