龙空技术网

Python 输出全排列怎么通过递推实现?

烦人的星辰 68

前言:

此时朋友们对“python打印出全部的列名称”大致比较注意,咱们都想要学习一些“python打印出全部的列名称”的相关内容。那么小编也在网络上汇集了一些对于“python打印出全部的列名称””的相关资讯,希望大家能喜欢,朋友们一起来学习一下吧!

#头条文章养成计划#

问题思路:

首先检查输入数组nums是否为空。如果为空,直接返回一个包含空列表的列表,表示只有一种排列,即空列表。将第一个元素nums[0]作为初始结果res的唯一元素。从数组的第二个元素开始,遍历每个元素curr创建一个空的新结果列表new_res遍历当前结果列表res中的每个排列perm对于每个排列perm,在其各个位置插入当前元素curr,生成新的排列new_perm将新的排列new_perm添加到新结果列表new_res中。将新结果列表new_res赋值给结果列表res,更新结果列表。重复上述步骤,直到遍历完所有元素。最终,结果列表res中将包含所有的排列组合。

代码实现:

def permute(nums):    if not nums:        return [[]]        res = [[nums[0]]]    for i in range(1, len(nums)):        curr = nums[i]        new_res = []        for perm in res:            for j in range(len(perm)+1):                new_perm = perm[:j] + [curr] + perm[j:]                new_res.append(new_perm)        res = new_res    return resnums = [1, 2, 3]result = permute(nums)print(result)

运行代码输出:

[[1, 2, 3], [2, 1, 3], [2, 3, 1], [1, 3, 2], [3, 1, 2], [3, 2, 1]]

标签: #python打印出全部的列名称 #全排列的实现 #python生成全排列 #python 生成全排列