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中的异常处理简明介绍
Apr 13 Python
浅谈Python实现贪心算法与活动安排问题
Dec 19 Python
python使用json序列化datetime类型实例解析
Feb 11 Python
Python 实现使用dict 创建二维数据、DataFrame
Apr 13 Python
python实现根据指定字符截取对应的行的内容方法
Oct 23 Python
Python求均值,方差,标准差的实例
Jun 29 Python
python树的同构学习笔记
Sep 14 Python
Django单元测试中Fixtures用法详解
Feb 25 Python
python 中的paramiko模块简介及安装过程
Feb 29 Python
django的模型类管理器——数据库操作的封装详解
Apr 01 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
Jul 02 Python
pandas提升计算效率的一些方法汇总
May 30 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 fsockopen写的HTTP下载的类
2007/02/22 PHP
php中session过期时间设置及session回收机制介绍
2014/05/05 PHP
javascript数字数组去重复项的实现代码
2010/12/30 Javascript
jQuery创建插件的代码分析
2011/04/14 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
JS中实现简单Formatter函数示例代码
2014/08/19 Javascript
了不起的node.js读书笔记之例程分析
2014/12/22 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
2017/03/07 Javascript
vue数据双向绑定原理解析(get &amp; set)
2017/03/08 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
BootStrap中Table隐藏后显示问题的实现代码
2017/08/31 Javascript
JavaScript实现单例模式实例分享
2017/12/22 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
2018/04/10 Javascript
JavaScript函数节流和函数去抖知识点学习
2018/07/31 Javascript
vue使用高德地图根据坐标定位点的实现代码
2019/08/22 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
JS+CSS实现过渡特效
2021/01/02 Javascript
关于better-scroll插件的无法滑动bug(2021通过插件解决)
2021/03/01 Javascript
[03:18]DOTA2亚洲邀请赛小组赛第一日 RECAP赛事回顾
2015/01/30 DOTA
python代码制作configure文件示例
2014/07/28 Python
使用Python压缩和解压缩zip文件的教程
2015/05/06 Python
python基于multiprocessing的多进程创建方法
2015/06/04 Python
python 3.7.0 安装配置方法图文教程
2018/08/27 Python
使用Python中的reduce()函数求积的实例
2019/06/28 Python
Django异步任务线程池实现原理
2019/12/17 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
Yahoo-PHP面试题3
2012/01/14 面试题
四风查摆剖析材料
2014/10/10 职场文书
2014年个人委托书范本
2014/10/13 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
2015年保险公司内勤工作总结
2015/05/23 职场文书
工作会议简报
2015/07/20 职场文书