Python生成n个元素的全排列

本文将使用Python语言编写程序生成n个元素的全排列,代码不使用第三方库;

生成全排列

def permute(nums):

    length = len(nums)

    permutations = []

    def _permute(index=0):

        if index == length:
            permutations.append(nums[0:length])
        
        for i in range(index,length):
            nums[i],nums[index] = nums[index],nums[i]
            _permute(index+1)
            nums[i],nums[index] = nums[index],nums[i]
            
    _permute()

    return permutations

nums = [i for i in range(1,4)] #[1,2,3]

print("Input:\n",nums)
P = permute(nums)
print("Permutations:")
for p in P:
    print(p)

运行效果

Input:
 [1, 2, 3]
Permutations:
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 2, 1]
[3, 1, 2]

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/python-generate-full-permutation.html

分类: 计算机技术
推荐阅读:
C语言中struct和typedef struct的用法和不同 在C语言中struct和typedef struct创建的结构体并没有什么不同,只是使用typedef后可以为结构体创建一个别名;
Rust语言获取当前的时间戳 在 Rust 中,要获取当前的时间戳(Unix 时间戳),您可以使用 std::time::SystemTime 和 std::time::UNIX_EPOCH 的组合,然后将时间间隔转换为秒数。
应该掌握的Linux终端常用快捷键 本篇内容将介绍在Linux系统(例如Debian、CentOS、ubuntu等)终端下使用快捷键来加快你的输入速度,节省你的时间;
Rust compile_error宏的用法和示例 compile_error是Rust中的一个宏,它用于在编译时生成一个错误信息;这在编写宏或者进行一些静态检查时非常有用;
Python打印有颜色的字符串 使用Python在命令行或shell终端输出有颜色的字符串,效果如下:
C语言实现矩阵乘法 本文将使用C语言实现矩阵乘法;分别生成阶为m*n和p*q的两个矩阵,以得到阶为m*q的结果矩阵,其中n等于p。