You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将字符串"1317"生成分割后的指定格式数组序列?

实现方法

要生成字符串"1317"的所有分割组合,核心思路是遍历所有可能的分割点组合,再按分割点切割字符串并格式化输出。这里可以用itertools.combinations来高效生成分割点的所有组合,具体代码如下:

import itertools

s = "1317"
n = len(s)
result = []

# 先添加不分割的情况
result.append(f"[{int(s)}]")

# 遍历分割点数量:1到3个(因为4个字符有3个间隙)
for split_count in range(1, n):
    # 从右到左取分割点,保证输出顺序和示例一致
    for cuts in itertools.combinations(reversed(range(n-1)), split_count):
        # 分割点需要按正序排列才能正确切割字符串
        sorted_cuts = sorted(cuts)
        segments = []
        start = 0
        for cut in sorted_cuts:
            # 切割出当前段并转成整数
            segments.append(int(s[start:cut+1]))
            start = cut + 1
        # 添加最后一段
        segments.append(int(s[start:]))
        # 格式化为要求的字符串形式
        result.append(f"[{','.join(map(str, segments))}]")

# 输出所有结果
for item in result:
    print(item)

代码说明

  1. 分割点逻辑:4个字符的字符串有3个可分割的间隙(字符之间的位置),每个间隙可选分割或不分割,总共有2^(4-1)=8种组合,正好对应你要的8个结果。
  2. 控制输出顺序:通过reversed(range(n-1))让分割点从右到左选取,再对每个组合的分割点排序,就能得到和示例完全一致的输出顺序。
  3. 切割与格式化:按分割点切割字符串,转成整数后用f-string格式化成[x,y,z]的形式。

运行这段代码会直接输出你需要的序列:

[1317]
[131,7]
[13,17]
[1,317]
[13,1,7]
[1,31,7]
[1,3,17]
[1,3,1,7]

内容的提问来源于stack exchange,提问作者Ayush Gaur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 02:30:04