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批量导出导入MySQL用户的方法
Nov 15 Python
Python中标准模块importlib详解
Apr 16 Python
python编程之requests在网络请求中添加cookies参数方法详解
Oct 25 Python
Python with语句上下文管理器两种实现方法分析
Feb 09 Python
python读文件保存到字典,修改字典并写入新文件的实例
Apr 23 Python
Python装饰器用法实例总结
May 26 Python
使用Flask集成bootstrap的方法
Jul 24 Python
python2与python3中关于对NaN类型数据的判断和转换方法
Oct 30 Python
Python构建图像分类识别器的方法
Jan 12 Python
Pycharm 实现下一个文件引用另外一个文件的方法
Jan 17 Python
详解Python 切片语法
Jun 10 Python
详解Django-channels 实现WebSocket实例
Aug 22 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
mysq GBKl乱码
2006/11/28 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
2014/11/28 PHP
joomla组件开发入门教程
2016/05/04 PHP
PHP利用二叉堆实现TopK-算法的方法详解
2017/04/24 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
php和js实现根据子网掩码和ip计算子网功能示例
2019/11/09 PHP
JavaScript 脚本将当地时间转换成其它时区
2009/03/19 Javascript
window.location.href的用法(动态输出跳转)
2014/08/09 Javascript
JavaScript中setUTCFullYear()方法的使用简介
2015/06/12 Javascript
Node.js中的process.nextTick使用实例
2015/06/25 Javascript
微信小程序-getUserInfo回调的实例详解
2017/10/27 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
php使用递归与迭代实现快速排序示例
2014/01/23 Python
解决python2.7用pip安装包时出现错误的问题
2017/01/23 Python
Python中摘要算法MD5,SHA1简介及应用实例代码
2018/01/09 Python
linux下python使用sendmail发送邮件
2018/05/22 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
Python面向对象实现一个对象调用另一个对象操作示例
2019/04/08 Python
python 字典有序并写入json文件过程解析
2019/09/30 Python
基于Python解密仿射密码
2019/10/21 Python
Keras实现DenseNet结构操作
2020/07/06 Python
Node.js 和 Python之间该选择哪个?
2020/08/05 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
2021/02/07 Python
Snapfish英国:在线照片打印和个性化照片礼品
2017/01/13 全球购物
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
机修工岗位职责
2013/11/24 职场文书
企业宣传口号
2014/06/12 职场文书
小学教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
幼儿园教师工作总结2015
2015/04/02 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
离职信范文
2015/06/23 职场文书
新学期开学寄语2016
2015/12/04 职场文书
忠诚教育学习心得体会
2016/01/23 职场文书
高中美术教学反思
2016/02/17 职场文书
golang定时器
2022/04/14 Golang