如何将 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]
假设我们有一个像 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]