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中urllib模块用法实例详解
Nov 19 Python
python集合类型用法分析
Apr 08 Python
python通过自定义isnumber函数判断字符串是否为数字的方法
Apr 23 Python
Python中time模块与datetime模块在使用中的不同之处
Nov 24 Python
python实现简易云音乐播放器
Jan 04 Python
python selenium UI自动化解决验证码的4种方法
Jan 05 Python
Python实现识别手写数字大纲
Jan 29 Python
Python WEB应用部署的实现方法
Jan 02 Python
python 处理数字,把大于上限的数字置零实现方法
Jan 28 Python
pandas 如何分割字符的实现方法
Jul 29 Python
Python目录和文件处理总结详解
Sep 02 Python
如何提高python 中for循环的效率
Apr 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的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
PHP 计算两个时间段之间交集的天数示例
2019/10/24 PHP
PHP基于openssl实现非对称加密代码实例
2020/06/19 PHP
document.documentElement &amp;&amp; document.documentElement.scrollTop
2007/12/01 Javascript
关于extjs4如何获取grid修改后的数据的问题
2013/08/07 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
2016/09/14 Javascript
微信小程序 网络API发起请求详解
2016/11/09 Javascript
jQuery实现菜单栏导航效果
2017/08/15 jQuery
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
vue.js图片转Base64上传图片并预览的实现方法
2018/08/02 Javascript
分享JS表单验证源码(带错误提示及密码等级)
2020/01/05 Javascript
pip安装Python库时遇到的问题及解决方法
2017/11/23 Python
Python面向对象思想与应用入门教程【类与对象】
2019/04/12 Python
Django ORM 常用字段与不常用字段汇总
2019/08/09 Python
Python with标签使用方法解析
2020/01/17 Python
Python轻量级web框架bottle使用方法解析
2020/06/13 Python
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
非洲NO.1网上商店:Jumia肯尼亚
2016/08/18 全球购物
日本必酷网络直营店:Biccamera
2019/03/23 全球购物
Ooni英国官网:披萨烤箱
2020/05/31 全球购物
什么是触发器(trigger)? 触发器有什么作用?
2013/09/18 面试题
vue实现倒计时功能
2021/03/24 Vue.js
会计系毕业个人自荐信格式
2013/09/23 职场文书
大学生实习期自我评价范文
2013/10/03 职场文书
教育孩子心得体会
2014/01/01 职场文书
腾讯广告词
2014/03/19 职场文书
组织鉴定材料
2014/06/02 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
十佳少年事迹材料
2014/12/25 职场文书
2015社区精神文明建设工作总结
2015/04/21 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书