python使用递归解决全排列数字示例


Posted in Python onFebruary 11, 2014

第一种方法:递归

def perms(elements):
    if len(elements) <=1:
        yield elements
    else:
        for perm in perms(elements[1:]):
            for i in range(len(elements)):
                yield perm[:i] + elements[0:1] + perm[i:]
for item in list(perms([1, 2, 3,4])):
    print item

结果
[1, 2, 3, 4]
[2, 1, 3, 4]
[2, 3, 1, 4]
[2, 3, 4, 1]
[1, 3, 2, 4]
[3, 1, 2, 4]
[3, 2, 1, 4]
[3, 2, 4, 1]
[1, 3, 4, 2]
[3, 1, 4, 2]
[3, 4, 1, 2]
[3, 4, 2, 1]
[1, 2, 4, 3]
[2, 1, 4, 3]
[2, 4, 1, 3]
[2, 4, 3, 1]
[1, 4, 2, 3]
[4, 1, 2, 3]
[4, 2, 1, 3]
[4, 2, 3, 1]
[1, 4, 3, 2]
[4, 1, 3, 2]
[4, 3, 1, 2]
[4, 3, 2, 1]

第二种方法:python标准库

import itertools
print list(itertools.permutations([1, 2, 3,4],3))

源代码如下:

#coding:utf-8
import itertools
print list(itertools.permutations([1, 2, 3,4],3))
def perms(elements):
    if len(elements) <=1:
        yield elements
    else:
        for perm in perms(elements[1:]):
            for i in range(len(elements)):
                yield perm[:i] + elements[0:1] + perm[i:]
for item in list(perms([1, 2, 3,4])):
    print item
Python 相关文章推荐
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
Nov 28 Python
Python中用于转换字母为小写的lower()方法使用简介
May 19 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
Aug 28 Python
python读写json文件的简单实现
Apr 11 Python
python使用fcntl模块实现程序加锁功能示例
Jun 23 Python
利用python如何处理nc数据详解
May 23 Python
python中map的基本用法示例
Sep 10 Python
django-filter和普通查询的例子
Aug 12 Python
Python 下载及安装详细步骤
Nov 04 Python
python安装读取grib库总结(推荐)
Jun 24 Python
用python批量下载apk
Dec 29 Python
pytorch实现加载保存查看checkpoint文件
Jul 15 Python
python基础教程之popen函数操作其它程序的输入和输出示例
Feb 10 #Python
python基础教程之python消息摘要算法使用示例
Feb 10 #Python
go和python调用其它程序并得到程序输出
Feb 10 #Python
python实现socket端口重定向示例
Feb 10 #Python
python访问sqlserver示例
Feb 10 #Python
python实现代码行数统计示例分享
Feb 10 #Python
python基础教程之获取本机ip数据包示例
Feb 10 #Python
You might like
php文件上传简单实现方法
2015/01/24 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
2016/02/23 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
JS中怎样判断undefined(比较不错的方法)
2014/03/27 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
JavaScript数据推送Comet技术详解
2016/04/07 Javascript
JavaScript数组的定义及数字操作技巧
2016/06/06 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
es6在react中的应用代码解析
2017/11/08 Javascript
简单的vuex 的使用案例笔记
2018/04/13 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
2019/10/24 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
2020/11/19 Vue.js
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
Python tkinter实现简单加法计算器代码实例
2020/05/13 Python
Python3 webservice接口测试代码详解
2020/06/23 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
2020/06/23 Python
高清屏下canvas重置尺寸引发的问题的解决
2019/10/14 HTML / CSS
生产车间主管岗位职责
2013/12/28 职场文书
竞选大队长演讲稿
2014/04/29 职场文书
学校文明单位申报材料
2014/05/06 职场文书
社区志愿者活动方案
2014/08/18 职场文书
竞选班干部演讲稿100字
2014/08/20 职场文书
2015年元旦主持词开场白
2014/12/14 职场文书
2015安全保卫工作总结
2015/04/25 职场文书
法制工作总结2015
2015/07/23 职场文书
物业保洁员管理制度
2015/08/05 职场文书
致运动员的广播稿
2015/08/19 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
2016年乡镇七一建党节活动总结
2016/04/05 职场文书
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python
Node.js实现爬取网站图片的示例代码
2022/04/04 NodeJs