python非遞歸全排列實現(xiàn)方法
剛剛開始學(xué)習(xí)python,當(dāng)前看到了函數(shù)這一節(jié)。結(jié)合數(shù)組操作,寫了個非遞歸的全排列生成。原理是插入法,也就是在一個有n個元素的已有排列中,后加入的元素,依次在前,中,后的每一個位置插入,生成n+1個新的全排列。因為Python切割數(shù)組或者字符串,以及合并比較方便,所以,程序會節(jié)省很多代碼。
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非遞歸全排列實現(xiàn)方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
感知器基礎(chǔ)原理及python實現(xiàn)過程詳解
這篇文章主要介紹了感知器基礎(chǔ)原理及python實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-09-09
利用django-suit模板添加自定義的菜單、頁面及設(shè)置訪問權(quán)限
這篇文章主要給大家介紹了關(guān)于利用django-suit模板添加自定義的菜單、頁面及設(shè)置訪問權(quán)限的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起看看吧2018-07-07
python基礎(chǔ)知識(一)變量與簡單數(shù)據(jù)類型詳解
這篇文章主要介紹了python變量與簡單數(shù)據(jù)類型詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
Python通過Socket手動實現(xiàn)HTTP協(xié)議
這篇文章主要為大家詳細介紹了Python如何通過Socket手動實現(xiàn)HTTP協(xié)議,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一2024-03-03
Python基于輾轉(zhuǎn)相除法求解最大公約數(shù)的方法示例
這篇文章主要介紹了Python基于輾轉(zhuǎn)相除法求解最大公約數(shù)的方法,結(jié)合實例形式分析了Python使用輾轉(zhuǎn)相除法求解最大公約數(shù)的實現(xiàn)方法與優(yōu)化操作技巧,需要的朋友可以參考下2018-04-04
使用Cython中prange函數(shù)實現(xiàn)for循環(huán)的并行
Cython中提供了一個prange函數(shù),專門用于循環(huán)的并行執(zhí)行。這個 prange的特殊功能是Cython獨一無二的,并且prange只能與for循環(huán)搭配使用,不能獨立存在。本文就將使用 prange 實現(xiàn) for 循環(huán)的并行,感興趣的可以了解一下2022-08-08

