3

次のような文字列があるとします。

a = "123**7*9"

そして、可能なすべての組み合わせを生成する必要があります。

12300709...12399799

Pythonでそれを行う方法は?

4

3 に答える 3

11

itertools.product文字列フォーマットを使用できます:

>>> from itertools import product
>>> strs = "123**7*9"
>>> c = strs.count("*")              #count the number of "*"'s
>>> strs = strs.replace("*","{}")    #replace '*'s with '{}' for formatting
>>> for x in product("0123456789",repeat=c):
...     print strs.format(*x)               #use `int()` to get an integer

12300709
12300719
12300729
12300739
12300749
12300759
12300769
12300779
12300789
12300799
....
于 2013-05-08T09:37:45.090 に答える
0

再帰バリアント:

def combinate(pattern, order=0):
    if pattern:
        for val in combinate(pattern[:-1], order+1):
            last_value = pattern[-1]
            if last_value == '*':
                for gen in xrange(10):
                    value = gen * (10**order) + val
                    yield value
            else:
                value = int(last_value)*(10**order)+val
                yield value
    else:
        yield 0


for i in combinate('1*1**2'):
    print i
于 2013-05-08T10:04:56.187 に答える