python非递归全排列实现方法


Posted in Python onApril 10, 2017

刚刚开始学习python,当前看到了函数这一节。结合数组操作,写了个非递归的全排列生成。原理是插入法,也就是在一个有n个元素的已有排列中,后加入的元素,依次在前,中,后的每一个位置插入,生成n+1个新的全排列。因为Python切割数组或者字符串,以及合并比较方便,所以,程序会节省很多代码。

def getArrayInsertCharToStr(STR,CHAR):
  arr =[]
  s_len = len(STR)
  index =0
  while index <= s_len:
    #分割字符串
    arr.append(STR[:index]+CHAR+STR[index:s_len])
    index = index + 1
  return arr  

def getArrayInsertCharToArray(array,CHAR):
  index = 0
  re_array = []
  while index < len(array):
    re_array = re_array + getArrayInsertCharToStr(array[index],CHAR)
    index = index + 1
  return re_array       

def getPermutation(STR):
    resultArr = [STR[0]]
    for item in STR[1:]:
      resultArr = getArrayInsertCharToArray(resultArr,item)
    return   resultArr


print(getPermutation('abc'))

以上这篇python非递归全排列实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python django实现简单的邮件系统发送邮件功能
Jul 14 Python
python机器学习之决策树分类详解
Dec 20 Python
python实现基于SVM手写数字识别功能
May 27 Python
django manage.py扩展自定义命令方法
May 27 Python
python的继承知识点总结
Dec 10 Python
django中的图片验证码功能
Sep 18 Python
在python中利用try..except来代替if..else的用法
Dec 19 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
Jan 14 Python
对pytorch的函数中的group参数的作用介绍
Feb 18 Python
pandas分批读取大数据集教程
Jun 06 Python
python基于opencv实现人脸识别
Jan 04 Python
Python实现文字pdf转换图片pdf效果
Apr 03 Python
python 生成器生成杨辉三角的方法(必看)
Apr 10 #Python
Python贪吃蛇游戏编写代码
Oct 26 #Python
OpenCV实现人脸识别
Apr 07 #Python
python使用opencv进行人脸识别
Apr 07 #Python
Python 实现链表实例代码
Apr 07 #Python
python中如何使用朴素贝叶斯算法
Apr 06 #Python
python获取当前运行函数名称的方法实例代码
Apr 06 #Python
You might like
解析PHP可变函数的经典用法
2013/06/20 PHP
php中get_meta_tags()、CURL与user-agent用法分析
2014/12/16 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
PHP生成和获取XML格式数据的方法
2016/03/04 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
2019/09/16 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
javascript add event remove event
2008/04/07 Javascript
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
2011/11/30 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
2013/06/26 Javascript
利用JS来控制键盘的上下左右键(示例代码)
2013/12/14 Javascript
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
2014/06/24 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
2014/06/30 Javascript
使用jquery制作弹出框效果
2015/04/03 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
jQuery中常用动画效果函数(日常整理)
2016/09/17 Javascript
Jquery表单验证失败后不提交的解决方法
2016/10/18 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
使用JavaScript实现表格编辑器(实例讲解)
2017/08/02 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
PyChar学习教程之自定义文件与代码模板详解
2017/07/17 Python
python实现数据图表
2017/07/29 Python
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
Python log模块logging记录打印用法解析
2020/01/20 Python
HTML5 图片悬停放大的实现代码示例
2019/12/04 HTML / CSS
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
毕业生的自我鉴定
2013/10/29 职场文书
银行营业厅大堂经理岗位职责
2014/01/06 职场文书
大学第二课堂活动总结
2014/07/08 职场文书
商铺租房协议书范本
2014/12/04 职场文书
试用期自我评价范文
2015/03/10 职场文书
浅谈Vue的computed计算属性
2022/03/21 Vue.js