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

如何修改排列生成函数,使其支持输入整数n返回1到n的全排列?

全排列函数修改方案

需要做两处核心调整,既支持整数n输入,也满足输出为元组格式的要求:

  • 新增输入兼容逻辑:判断入参类型,如果是整数,自动生成1到n的连续整数列表作为待排列数据源
  • 调整返回值格式:将所有排列结果从列表转为元组类型

修改后的完整代码

def permutation(input_data):
    # 兼容整数输入逻辑
    if isinstance(input_data, int):
        lst = list(range(1, input_data + 1))
    else:
        lst = input_data
    if len(lst) == 0:
        return []
    if len(lst) == 1:
        # 单元素排列转元组
        return [tuple(lst)]
    res = []
    for i in range(len(lst)):
        current_val = lst[i]
        remaining_lst = lst[:i] + lst[i+1:]
        for p in permutation(remaining_lst):
            # 拼接后转元组存入结果
            res.append(tuple([current_val] + list(p)))
    return res

效果验证

输入permutation(3),返回结果如下:

[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]

该版本同时保留了原有的列表输入能力,传入列表参数时仍可正常返回对应排列结果,兼容旧使用场景。

内容的提问来源于stack exchange,提问作者jordan parker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:36:04