如何将 int 拆分为 python 中每个可能的更小的 int

How to split int to every possible smaller int in python

假设我们有一个像 12345 这样的整数。我们想将它拆分成 python 中可能的数字: {[12345], [1234,5], [123,45],[12,345],[1,2345],[123,4,5],[12,34,5],....,[1,2,3,4,5]}

def get_all_divisions(n):
    if n < 10:
        return [[n]]
    all_part_div = get_all_divisions(n//10)
    ldigit = n % 10
    all_divs = []
    for div in all_part_div:
        div1 = div.copy()
        div1.append(ldigit)
        all_divs.append(div1)
        div2 = div.copy()
        div2[-1] = (div2[-1] * 10) + ldigit
        all_divs.append(div2)
   return all_divs

你可以对它采取递归的方法:

def splitNum(N):
    yield [N]
    D = 10
    while D < N:
        left,right = divmod(N,D)
        for nums in splitNum(left): yield nums+[right]
        D *= 10        

print(*splitNum(12345))

[12345] [1234, 5] [123, 4, 5] [12, 3, 4, 5] [1, 2, 3, 4, 5] [1, 23, 4, 5] [12, 34, 5] [1, 2, 34, 5] [1, 234, 5] [123, 45] [12, 3, 45] [1, 2, 3, 45] [1, 23, 45] [12, 345] [1, 2, 345] [1, 2345]