这里有新鲜出炉的 Python3 Cookbook 中文版,程序狗速度看过来!
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
下面小编就为大家带来一篇 python 非递归全排列实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
刚刚开始学习 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 非递归全排列实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持 PHPERZ。
来源: http://www.phperz.com/article/17/0524/333839.html