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

分类: 计算机技术
推荐阅读:
Golang中结构体方法的定义和使用 本文将详细的描述在Go语言中如何定义方法,以及如何使用它;阅读本文可能需要一点Go语言基础以及结构体的知识;
如何将Rust更新到最新版 Rust每隔一段时间就会有新的版本,若要将已安装的Rust更新到最新版,并不用先卸载旧的版本,只需要使用 rustup 工具;
Linux终端模拟打字(逐字符显示) 在Linux系统下,你可以使用一条命令来实现像电影里的效果,让字符逐个显示:
Python ord()函数 ord() 函数是 Python 内置函数之一,用于返回表示单个字符的 Unicode 码。它接受一个参数,即要获取 Unicode 码的字符。
Rust使用cfg来实现不同系统的条件编译 Rust使用cfg来实现不同系统的条件编译
Python Qt库PySide和PyQt哪个好? Qt是一个跨平台的GUI程序开发框架;使用Qt可以轻松的开发出GUI程序;而想在Python中创建Qt应用,则需一套用于调用Qt API的库;这里主要介绍两个比较成熟的python Qt库,PyQt和PySide;