如何用Python获取子字符串列表的所有排列组合?
解决方案:生成子字符串列表的所有拼接排列组合
核心思路
要实现需求,我们需要生成输入列表中所有非空子集的有序排列拼接结果——也就是从1个元素到全部元素的所有排列,再将每个排列里的子字符串依次拼接。借助itertools.permutations可以高效生成不同长度的排列,避免嵌套循环的冗余写法。
代码实现
import itertools def generate_all_combinations(str_list): result = [] # 遍历所有可能的子集长度:从1到列表总长度 for subset_length in range(1, len(str_list) + 1): # 生成当前长度的所有有序排列 for perm in itertools.permutations(str_list, subset_length): # 拼接排列中的子字符串并加入结果列表 result.append(''.join(perm)) return result # 示例调用 input_example = ['ab', 'CD', '12'] print(generate_all_combinations(input_example))
输出结果示例
运行代码后会得到包含所有预期结果的列表:
['ab', 'CD', '12', 'abCD', 'ab12', 'CDab', 'CD12', '12ab', '12CD', 'abCD12', 'ab12CD', 'CDab12', 'CD12ab', '12abCD', '12CDab']
关键细节说明
itertools.permutations(str_list, subset_length):自动生成列表中取subset_length个元素的所有有序排列,天然覆盖不同元素数量的拼接场景。''.join(perm):将排列中的子字符串直接拼接为完整字符串,简洁高效。- 循环从
1开始遍历长度,确保不会生成空子集对应的无效结果。
内容的提问来源于stack exchange,提问作者Arount
相关产品推荐
相关产品推荐

