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 相关文章推荐
PHP魔术方法__ISSET、__UNSET使用实例
Nov 25 Python
连接Python程序与MySQL的教程
Apr 29 Python
利用Python爬取可用的代理IP
Aug 18 Python
深入浅出学习python装饰器
Sep 29 Python
Python实现多线程的两种方式分析
Aug 29 Python
浅析python的优势和不足之处
Nov 20 Python
python通过ffmgep从视频中抽帧的方法
Dec 05 Python
Python数据可视化:饼状图的实例讲解
Dec 07 Python
Python3.9新特性详解
Oct 10 Python
python爬虫分布式获取数据的实例方法
Nov 26 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
Mar 03 Python
浅谈Python基础之列表那些事儿
May 11 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
基于curl数据采集之单页面并行采集函数get_htmls的使用
2013/04/28 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
2013/06/20 PHP
通过Email发送PHP错误的方法
2015/07/20 PHP
PHP简单实现DES加密解密的方法
2016/07/12 PHP
php实现登陆模块功能示例
2016/10/20 PHP
关于Laravel Route重定向的一个注意点
2017/01/16 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
jQuery使用动态渲染表单功能完成ajax文件下载
2013/01/15 Javascript
js获得鼠标的坐标值的方法
2013/03/13 Javascript
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
js控制输入框获得和失去焦点时状态显示的方法
2015/01/30 Javascript
jQuery判断对象是否存在的方法
2015/02/05 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
2016/08/15 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
2016/10/07 Javascript
js实现PC端根据IP定位当前城市地理位置
2017/02/22 Javascript
小程序云开发初探(小结)
2018/10/24 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
2020/10/24 Javascript
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
2021/03/01 Vue.js
[02:41]DOTA2英雄基础教程 冥魂大帝
2014/01/16 DOTA
python下paramiko模块实现ssh连接登录Linux服务器
2015/06/03 Python
python pandas dataframe 行列选择,切片操作方法
2018/04/10 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
简单了解django索引的相关知识
2019/07/17 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
Django之腾讯云短信的实现
2020/06/12 Python
8款使用 CSS3 实现超炫的 Loading(加载)的动画效果
2015/03/17 HTML / CSS
北京SQL新华信咨询
2016/09/30 面试题
四风问题专项整治工作情况报告
2014/10/28 职场文书
幼儿教师个人总结
2015/02/05 职场文书
荆州古城导游词
2015/02/06 职场文书
家庭暴力离婚起诉书
2015/05/18 职场文书
2016年圣诞节寄语(一句话)
2015/12/07 职场文书
JavaScript组合继承详解
2021/11/07 Javascript