python - 将数字拆分为所有可能的数字组,保持原始顺序

标签 python python-3.x list integer permutation

我有一个号码,我想将其拆分,如下所示。我想保留数字出现的顺序,但由此创建的列表必须保持数字的原始顺序。

我的号码是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/

相关文章:

python - django UnreadablePostError : request data read error 错误

python - 如何在行值而不是列值中绘制箱线图

python - 如何从python中的文件列表中复制文件

python - 使用 zip 或数组对列表进行操作

python - 在 Python 中创建整数范围列表的最有效且可读的方法是什么?

python - 从列表中传递参数

函数中的python语法错误

python - 为什么这个嵌套列表理解会产生错误?

关于实例的 Python __doc__ 文档

python-3.x - Python不准确的曲线拟合