如何在python中将int拆分为每个可能较小的int
假设我们有一个像12345这样的整数。我们希望在python中将其拆分为可能的数字:如何在python中将int拆分为每个可能较小的int,python,integer,Python,Integer,假设我们有一个像12345这样的整数。我们希望在python中将其拆分为可能的数字: {[12345],[1234,5],[123,45],[12345],[12345],[123,4,5],[12,34,5],…,[1,2,3,4,5]}定义获取所有分区(n): def get_all_divisions(n): if n < 10: return [[n]] all_part_div = get_all_divisions(n//10) ldig
{[12345],[1234,5],[123,45],[12345],[12345],[123,4,5],[12,34,5],…,[1,2,3,4,5]}
定义获取所有分区(n):
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
如果n<10:
返回[[n]]
all\u part\u div=获取所有分区(n//10)
ldigit=n%10
所有分区=[]
对于所有部分中的div:
div1=div.copy()
div1.append(ldigit)
所有divs.append(div1)
div2=div.copy()
div2[-1]=(div2[-1]*10)+ldigit
所有divs.append(div2)
返回所有_div
您可以采用递归方法:
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]
def splitNum(N):
收益率[N]
D=10
当D
为什么必须使用div1.copy
?好的,我不必使用它很好的方法-生成器函数
+递归
。直到。。