将数字分成所有可能的数字组,并保持原始顺序

问题描述 投票:2回答:1

我有一个数字,我想按如下所示拆分。我想保留数字的出现顺序,但是由此产生的列表必须保持数字的原始顺序。

我拥有的电话号码是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
python python-3.x
1个回答
2
投票

您可以改用我的答案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]
© www.soinside.com 2019 - 2024. All rights reserved.