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实现约瑟夫环问题的方法
May 03 Python
深入理解Python中装饰器的用法
Jun 28 Python
Python 中pandas.read_excel详细介绍
Jun 23 Python
浅谈flask截获所有访问及before/after_request修饰器
Jan 18 Python
解决python读取几千万行的大表内存问题
Jun 26 Python
numpy 计算两个数组重复程度的方法
Nov 07 Python
python石头剪刀布小游戏(三局两胜制)
Jan 20 Python
Python3.5模块的定义、导入、优化操作图文详解
Apr 27 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
Jun 20 Python
Python实现某论坛自动签到功能
Aug 20 Python
Python中Unittest框架的具体使用
Aug 27 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
Nov 13 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
DC漫画《蝙蝠侠和猫女》图透 猫女怀孕老爷当爹
2020/04/09 欧美动漫
Laravel 4.2 中队列服务(queue)使用感受
2014/10/30 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
2015/04/17 PHP
PHP+jQuery+Ajax实现用户登录与退出
2015/04/27 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
2016/11/16 PHP
详解PHP序列化和反序列化原理
2018/01/15 PHP
js常用函数 不错
2006/09/08 Javascript
javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码
2009/11/28 Javascript
禁止选中文字兼容IE、Chrome、FF等
2013/09/04 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
2014/04/22 Javascript
基于JavaScript实现手机短信按钮倒计时(超简单)
2015/12/30 Javascript
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
JavaScript实现邮箱地址自动匹配功能代码
2016/11/28 Javascript
详解能在多种前端框架下使用的表格控件
2017/01/11 Javascript
使用Webpack提高Vue.js应用的方式汇总(四种)
2017/07/10 Javascript
微信小程序wx.previewImage预览图片实例详解
2017/12/07 Javascript
微信小程序基础教程之worker线程的使用方法
2019/07/15 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
Python解析Excle文件中的数据方法
2018/10/23 Python
Python+threading模块对单个接口进行并发测试
2019/06/25 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
简单介绍django提供的加密算法
2019/12/18 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
英国航空官网:British Airways
2016/09/11 全球购物
澳大利亚儿童和婴儿产品在线商店:Lime Tree Kids
2017/10/05 全球购物
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
SneakerStudio英国:最佳运动鞋商店
2019/05/22 全球购物
优秀班集体获奖感言
2014/02/03 职场文书
捐资助学倡议书
2014/04/15 职场文书
相亲大会策划方案
2014/06/05 职场文书
班组拓展活动方案
2014/08/14 职场文书
幼儿园欢迎词范文
2015/01/26 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP