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数据结构之二叉树的统计与转换实例
Apr 29 Python
举例讲解Python中字典的合并值相加与异或对比
Jun 04 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
Aug 30 Python
Python+tkinter使用80行代码实现一个计算器实例
Jan 16 Python
对python实现二维函数高次拟合的示例详解
Dec 29 Python
快速排序的四种python实现(推荐)
Apr 03 Python
python变量的存储原理详解
Jul 10 Python
python画微信表情符的实例代码
Oct 09 Python
Python socket聊天脚本代码实例
Jan 02 Python
python绘制玫瑰的实现代码
Mar 02 Python
Jupyter Notebook折叠输出的内容实例
Apr 22 Python
有趣的二维码:使用MyQR和qrcode来制作二维码
May 10 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
YII2框架中actions的作用与使用方法示例
2020/03/13 PHP
javascript eval函数深入认识
2009/02/21 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
Js获取数组最大和最小值示例代码
2013/10/29 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
老生常谈javascript变量的命名规范和注释
2016/09/29 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
2016/10/17 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
原生js实现简单的焦点图效果实例
2017/12/14 Javascript
Vue指令指令大全
2019/02/09 Javascript
Vue CLI3中使用compass normalize的方法
2019/05/30 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
Python配置文件解析模块ConfigParser使用实例
2015/04/13 Python
Python实现统计代码行的方法分析
2017/07/12 Python
获取Django项目的全部url方法详解
2017/10/26 Python
python切片及sys.argv[]用法详解
2018/05/25 Python
Python函数参数操作详解
2018/08/03 Python
Django框架创建mysql连接与使用示例
2019/07/29 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
日本最大的彩色隐形眼镜销售网站:CharmColor
2020/09/09 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
员工培训心得体会
2013/12/30 职场文书
班组长岗位职责范本
2014/01/05 职场文书
学生会招新策划书
2014/02/14 职场文书
意外死亡赔偿协议书
2014/10/14 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书
校长一岗双责责任书
2015/05/09 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
校运会新闻稿
2015/07/17 职场文书
2015年“我们的节日·重阳节”活动总结
2015/07/29 职场文书
nginx共享内存的机制详解
2022/03/21 Servers
Win11如何查看显卡型号 Win11查看显卡型号的方法
2022/08/14 数码科技