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

如何在Python中实现列表划分并过滤子段含重复字符的方案

实现思路
  • 生成所有划分:长度为n的列表共有n-1个可切分的间隙,每个间隙可以选择切或者不切,遍历所有选择组合就能拿到全部不改变元素顺序的划分方案
  • 过滤规则:遍历每个划分的所有子段,只要任意子段出现重复元素就丢弃该划分,否则保留
实现代码
from itertools import product

def get_valid_partitions(lst):
    n = len(lst)
    if n == 0:
        return []
    valid_partitions = []
    # 遍历所有切分组合,1代表当前位置切分,0代表不切分
    for cuts in product([0, 1], repeat=n-1):
        partition = []
        start = 0
        for i, cut in enumerate(cuts):
            if cut == 1:
                partition.append(lst[start:i+1])
                start = i + 1
        partition.append(lst[start:])
        # 校验当前划分所有子段是否无重复元素
        is_valid = True
        for sub in partition:
            if len(set(sub)) != len(sub):
                is_valid = False
                break
        if is_valid:
            valid_partitions.append(partition)
    return valid_partitions
测试示例
test_lst = ['a', 'b', 'a']
result = get_valid_partitions(test_lst)
for p in result:
    print(p)

运行输出结果和需求预期完全一致:

[['a'], ['b', 'a']]
[['a', 'b'], ['a']]
[['a'], ['b'], ['a']]

内容的提问来源于stack exchange,提问作者1bitPython

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:15:01