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 相关文章推荐
35个Python编程小技巧
Apr 01 Python
Python采用socket模拟TCP通讯的实现方法
Nov 19 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
Sep 20 Python
Python语言描述连续子数组的最大和
Jan 04 Python
对matplotlib改变colorbar位置和方向的方法详解
Dec 13 Python
运用Python的webbrowser实现定时打开特定网页
Feb 21 Python
详解Python中的测试工具
Jun 09 Python
详解DeBug Python神级工具PySnooper
Jul 03 Python
在Django下创建项目以及设置settings.py教程
Dec 03 Python
python+Selenium自动化测试——输入,点击操作
Mar 06 Python
Python Tkinter实例——模拟掷骰子
Oct 24 Python
python - timeit 时间模块
Apr 06 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导入excel文件到mysql数据库的方法
2015/01/14 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
php操作access数据库的方法详解
2017/02/22 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
TopList标签和JavaScript结合两例
2007/08/12 Javascript
JS模拟面向对象全解(一、类型及传递)
2011/07/13 Javascript
jquery中:input和input的区别分析
2011/07/13 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
2014/01/22 Javascript
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
2016/09/12 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
webpack本地开发环境无法用IP访问的解决方法
2018/03/20 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
[01:00:59]VP VS VG Supermajor小组赛胜者组第二轮 BO3第二场 6.2
2018/06/03 DOTA
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
Python随机函数random()使用方法小结
2018/04/29 Python
django 自定义过滤器的实现
2019/02/26 Python
解决Python内层for循环如何break出外层的循环的问题
2019/06/24 Python
Django REST framework 单元测试实例解析
2019/11/07 Python
Python中使用gflags实例及原理解析
2019/12/13 Python
使用Tensorboard工具查看Loss损失率
2020/02/15 Python
python实现简单学生信息管理系统
2020/04/09 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
2020/04/20 Python
Pytorch转tflite方式
2020/05/25 Python
Python 操作 MySQL数据库
2020/09/18 Python
HTML5 video循环播放多个视频的方法步骤
2020/08/06 HTML / CSS
介绍一下内联、左联、右联
2013/12/31 面试题
武汉东之林科技有限公司机试
2013/09/17 面试题
大学生入党自我鉴定
2013/10/31 职场文书
修理厂厂长岗位职责
2014/01/30 职场文书
优秀社区干部事迹材料
2014/02/03 职场文书
学生会个人总结范文
2015/02/15 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书