Python循環(huán)實(shí)現(xiàn)n的全排列功能
描述:
輸入一個(gè)大于0的整數(shù)n,輸出1到n的全排列:
例如:
n=3,輸出[[3, 2, 1], [2, 3, 1], [2, 1, 3], [3, 1, 2], [1, 3, 2], [1, 2, 3]] n=4,輸出[[4, 3, 2, 1], [3, 4, 2, 1], [3, 2, 4, 1], [3, 2, 1, 4], [4, 2, 3, 1], [2, 4, 3, 1], [2, 3, 4, 1], [2, 3, 1, 4], [4, 2, 1, 3], [2, 4, 1, 3], [2, 1, 4, 3], [2, 1, 3, 4], [4, 3, 1, 2], [3, 4, 1, 2], [3, 1, 4, 2], [3, 1, 2, 4], [4, 1, 3, 2], [1, 4, 3, 2], [1, 3, 4, 2], [1, 3, 2, 4], [4, 1, 2, 3], [1, 4, 2, 3], [1, 2, 4, 3], [1, 2, 3, 4]]
思路:
為1時(shí),結(jié)果為1 為2時(shí),結(jié)果就是兩種:1,2 2,1(1的前后插入) 為3時(shí),結(jié)果就是六種:1,2,3 1,3,2 3,2,1 (1,2的前中后插入) 3,2,1 2,3,1 2,1,3 (2,1的前中后插入)
代碼:
import copy
def full_arrange(n):
data = [] # 中間結(jié)果
res = [] # 最終結(jié)果
if n == 1 :
return 1
res = [[1]]
for i in range(2, n+1):
for j in range(len(res)): # 遍歷res數(shù)組(二維數(shù)組)
for x in range(len(res[j])+1): # 遍歷res數(shù)組中的元素(一維數(shù)組)
data = copy.copy(res[j]) # 淺拷貝
data.insert(x,i) # 在一維數(shù)組的不同位置插入元素,獲得新的數(shù)組
res.append(data)
x += 1
j += 1
# 刪除多余數(shù)組(原始數(shù)組) 最后保留的數(shù)據(jù)(一維數(shù)組的長(zhǎng)度) == i
while True:
if len(res[0]) != i:
res.remove(res[0])
else:
break
i += 1
return res
print(full_arrange(n))
總結(jié)
以上所述是小編給大家介紹的Python循環(huán)實(shí)現(xiàn)n的全排列功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
Python 模擬動(dòng)態(tài)產(chǎn)生字母驗(yàn)證碼圖片功能
這篇文章主要介紹了Python 模擬動(dòng)態(tài)產(chǎn)生字母驗(yàn)證碼圖片,這里給大家介紹了pillow模塊的使用,需要的朋友可以參考下2019-12-12
python之隨機(jī)數(shù)函數(shù)的實(shí)現(xiàn)示例
這篇文章主要介紹了python之隨機(jī)數(shù)函數(shù)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
使用python本地部署DeepSeek運(yùn)行時(shí)報(bào)錯(cuò)?OSError:?[WinError?193]?%1?不是
文章介紹了在本地使用Python部署DeepSeek時(shí)遇到的OSError:?[WinError?193]?錯(cuò)誤,通過檢查錯(cuò)誤信息,發(fā)現(xiàn)與numpy版本有關(guān),解決方法是卸載并重新安裝numpy,最終,問題得到解決,感興趣的朋友跟隨小編一起看看吧2025-02-02
關(guān)于Python 實(shí)現(xiàn)tuple和list的轉(zhuǎn)換問題
這篇文章主要介紹了Python 實(shí)現(xiàn)tuple和list的轉(zhuǎn)換,文中介紹了list(列表)和tuple(元組)共同點(diǎn)和區(qū)別,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05

