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中stdout输出不缓存的设置方法
May 29 Python
简单介绍Python中的filter和lambda函数的使用
Apr 07 Python
Python使用turtule画五角星的方法
Jul 09 Python
Python3中的真除和Floor除法用法分析
Mar 16 Python
Python新手入门最容易犯的错误总结
Apr 24 Python
Python使用win32com实现的模拟浏览器功能示例
Jul 13 Python
django中send_mail功能实现详解
Feb 06 Python
Python实现随机取一个矩阵数组的某几行
Nov 26 Python
python与mysql数据库交互的实现
Jan 06 Python
解决导入django_filters不成功问题No module named 'django_filter'
Jul 15 Python
利用Python中的Xpath实现一个在线汇率转换器
Sep 09 Python
Opencv实现二维直方图的计算及绘制
Jul 21 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下清空字符串中的HTML标签的代码
2010/09/06 PHP
PHP大批量插入数据库的3种方法和速度对比
2014/07/08 PHP
国产PHP开发框架myqee新手快速入门教程
2014/07/14 PHP
php数组添加元素方法小结
2014/12/20 PHP
PHP模拟post提交数据方法汇总
2016/02/16 PHP
PHP中的表达式简述
2016/05/29 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
input 高级限制级用法
2009/03/26 Javascript
JS 进度条效果实现代码整理
2011/05/21 Javascript
js计算两个时间之间天数差的实例代码
2013/11/19 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
javascript同步服务器时间和同步倒计时小技巧
2015/09/24 Javascript
基于jQuery实现淡入淡出效果轮播图
2020/07/31 Javascript
weex里Vuex state使用storage持久化详解
2017/09/09 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
详解Django-channels 实现WebSocket实例
2019/08/22 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
2020/05/07 Python
澳大利亚冲浪和时尚服装网上购物:SurfStitch
2017/07/29 全球购物
EQVVS官网:设计师男装和女装
2018/10/24 全球购物
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
什么是java序列化,如何实现java序列化
2012/11/14 面试题
应届大学生的推荐信
2013/11/20 职场文书
职业规划书如何设计?
2014/01/09 职场文书
运动会方阵解说词
2014/02/12 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
小学综治宣传月活动总结
2014/07/02 职场文书
关于运动会的广播稿
2014/09/22 职场文书
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
三行辞职书范文
2015/02/26 职场文书
基层党支部承诺书
2015/04/30 职场文书
JavaScript控制台的更多功能
2021/04/28 Javascript