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实现全局变量的两个解决方法
Jul 03 Python
基于Python实现对PDF文件的OCR识别
Aug 05 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
Jan 24 Python
CentOS7.3编译安装Python3.6.2的方法
Jan 22 Python
python3实现域名查询和whois查询功能
Jun 21 Python
Python3 chardet模块查看编码格式的例子
Aug 14 Python
Python pandas.DataFrame 找出有空值的行
Sep 09 Python
Python实现将蓝底照片转化为白底照片功能完整实例
Dec 13 Python
Python中base64与xml取值结合问题
Dec 22 Python
Tensorflow:转置函数 transpose的使用详解
Feb 11 Python
django model object序列化实例
Mar 13 Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 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第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
Google韩国首页图标动画效果
2007/08/26 Javascript
浅谈javascript 面向对象编程
2009/10/28 Javascript
自写简单JS判断是否已经弹出页面
2010/10/20 Javascript
jscript读写二进制文件的方法
2015/04/22 Javascript
JS代码随机生成姓名、手机号、身份证号、银行卡号
2016/04/27 Javascript
easyui validatebox验证
2016/04/29 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
微信小程序 Template详解及简单实例
2017/01/05 Javascript
ES6新数据结构Set与WeakSet用法分析
2017/03/31 Javascript
傻瓜式解读koa中间件处理模块koa-compose的使用
2018/10/30 Javascript
VUE写一个简单的表格实例
2019/08/06 Javascript
JavaScript实现烟花绽放动画效果
2020/08/04 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
2020/08/20 Javascript
Python ORM框架SQLAlchemy学习笔记之数据查询实例
2014/06/10 Python
python 文件查找及内容匹配方法
2018/10/25 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
python set集合使用方法解析
2019/11/05 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
解决import tensorflow as tf 出错的原因
2020/04/16 Python
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
Guess荷兰官网:美国服饰品牌
2020/01/22 全球购物
社保委托书怎么写
2014/08/02 职场文书
课外访万家心得体会
2014/09/03 职场文书
怎样写辞职信
2015/02/27 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers
python操作xlsx格式文件并读取
2021/06/02 Python
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
SQL实现LeetCode(180.连续的数字)
2021/08/04 MySQL
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技