如何修改排列生成函数,使其支持输入整数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
相关产品推荐
相关产品推荐

