我有一个号码,我想将其拆分,如下所示。我想保留数字出现的顺序,但由此创建的列表必须保持数字的原始顺序。
我的号码是3147,可以如下所示进行拆分。 3147可以拆成31、47或3、1、47等,但原数的顺序不能丢失。
那么我该如何实现呢?
如果我能用 Python 得到答案那就最好了,但用任何其他语言也可以。
Input
3147
Output
[3,1,4,7]
[3,147]
[3,1,47]
[31,4,7]
[31,47]
etc
最佳答案
您可以使用我的答案的改编版 here :
代码:
def splitter(n):
s = str(n)
for i in range(1, len(s)):
start = s[0:i]
end = s[i:]
yield [int(start), int(end)]
for split in splitter(end):
result = [start]
result.extend(split)
yield list(int(x) for x in result)
用法:
for x in splitter(3147):
print(x)
输出:
[3, 147]
[3, 1, 47]
[3, 1, 4, 7]
[3, 14, 7]
[31, 47]
[31, 4, 7]
[314, 7]
关于python - 将数字拆分为所有可能的数字组,保持原始顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60004279/