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

如何通过Python递归实现从多组字符串列表参数生成所有可能的字符串组合

递归生成所有组合字符串列表的实现方案

当然有可行的实现思路啦!递归的核心就是把复杂的组合问题拆解成一个个更小的子问题,咱们一步步来拆解:

核心思路

  • 终止条件:当只剩最后一组元素(比如只剩SHAPES),直接返回这组元素作为基础组合;如果没有任何输入列表,返回空列表。
  • 递归步骤:每次取出第一组元素,然后递归处理剩下的所有组,得到后续组的所有组合结果;再把当前组的每个元素和后续组的每个组合结果拼接起来,形成完整的组合字符串。

实现代码

SIZES = ['small', 'medium', 'long']
COLORS = ['red', 'blue', 'green']
SHAPES = ['circle', 'triangle', 'square']

def string_concatenation(*args):
    # 终止条件1:没有输入列表,返回空列表
    if not args:
        return []
    # 终止条件2:只剩一个列表,返回该列表的元素
    if len(args) == 1:
        return args[0].copy()
    
    # 取出第一个列表和剩下的所有列表
    first_list = args[0]
    rest_combinations = string_concatenation(*args[1:])
    
    # 拼接当前元素和后续组合
    result = []
    for item in first_list:
        for combo in rest_combinations:
            result.append(f"{item} {combo}")
    
    return result

# 测试调用,会输出你需要的完整组合列表
print(string_concatenation(SIZES, COLORS, SHAPES))

代码解释

  1. 当调用string_concatenation(SIZES, COLORS, SHAPES)时,函数首先取出SIZES作为第一组,然后递归调用string_concatenation(COLORS, SHAPES)。
  2. 在递归调用中,取出COLORS作为第一组,再递归调用string_concatenation(SHAPES),这时候触发终止条件,返回SHAPES的所有元素。
  3. 接着把COLORS的每个元素和SHAPES的元素拼接,得到类似['red circle', 'red triangle', ..., 'green square']的中间组合列表。
  4. 最后回到最外层,把SIZES的每个元素和上面得到的中间列表中的每个字符串拼接,就得到了所有完整的组合。

这样就能生成你需要的所有可能组合的字符串列表啦,完全不需要用到itertools库~

内容的提问来源于stack exchange,提问作者R. Bogdan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 10:37:30