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 相关文章推荐
详解Swift中属性的声明与作用
Jun 30 Python
python数据结构之链表详解
Sep 12 Python
python实现人脸识别代码
Nov 08 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
Dec 14 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
Feb 06 Python
对numpy数据写入文件的方法讲解
Jul 09 Python
python os.listdir按文件存取时间顺序列出目录的实例
Oct 21 Python
Django项目后台不挂断运行的方法
Aug 31 Python
利用Python代码实现一键抠背景功能
Dec 29 Python
使用anaconda安装pytorch的实现步骤
Sep 03 Python
python绘图模块之利用turtle画图
Feb 12 Python
Python实战之实现康威生命游戏
Apr 26 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函数解决SQL injection
2006/12/09 PHP
PHP 分页类(模仿google)-面试题目解答
2009/09/13 PHP
php将数组存储为文本文件方法汇总
2015/10/28 PHP
PHP读取大文件末尾N行的高效方法推荐
2016/06/03 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
DOM中事件处理概览与原理的全面解析
2016/08/16 Javascript
JavaScript重定向URL参数的两种方法小结
2016/10/19 Javascript
JavaScript 动态三角函数实例详解
2017/01/08 Javascript
基于Vue的移动端图片裁剪组件功能
2017/11/28 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
JS插件clipboard.js实现一键复制粘贴功能
2020/12/04 Javascript
使用weixin-java-tools完成微信授权登录、微信支付的示例
2018/09/26 Javascript
学习使用ExpressJS 4.0中的新Router的用法
2018/11/06 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
[01:00:25]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS Liquid
2018/03/31 DOTA
[43:24]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.12
2020/12/17 DOTA
Cython 三分钟入门教程
2009/09/17 Python
python数据类型判断type与isinstance的区别实例解析
2017/10/31 Python
numpy判断数值类型、过滤出数值型数据的方法
2018/06/09 Python
python tkinter组件摆放方式详解
2019/09/16 Python
python Popen 获取输出,等待运行完成示例
2019/12/30 Python
python实现经典排序算法的示例代码
2021/02/07 Python
浅谈html5 video 移动端填坑记
2018/01/15 HTML / CSS
新加坡网上化妆品店:Best Buy World
2018/05/18 全球购物
英国现代家具和照明购物网站:Heal’s
2019/10/30 全球购物
深圳-东方伟业笔试部分
2015/02/11 面试题
少先队学雷锋活动月总结
2014/03/09 职场文书
企业新年寄语
2014/04/04 职场文书
学雷锋宣传标语
2014/06/25 职场文书
学校四风对照检查材料
2014/08/28 职场文书
新党章心得体会
2014/09/04 职场文书
2015年女工委工作总结
2015/07/27 职场文书
公安纪律作风整顿心得体会
2016/01/23 职场文书