淺談python輸出列表元素的所有排列形式
例如:
[‘a(chǎn)', ‘b', ‘c'] 輸出 [‘a(chǎn)', ‘b', ‘c'] [‘a(chǎn)', ‘c', ‘b'] [‘b', ‘a(chǎn)', ‘c'] [‘b', ‘c', ‘a(chǎn)'] [‘c', ‘a(chǎn)', ‘b'] [‘c', ‘b', ‘a(chǎn)']
方法一:利用遞歸的方式實(shí)現(xiàn)
def permutation(li):
len_list = len(li)
if len_list == 1:
return li
result = []
for i in range(len_list):
res_list = li[:i] + li[i+1:]
s = li[i]
per_result = permutation(res_list)
if len(per_result) == 1:
result.append(li[i:i + 1] + per_result)
else:
result += [[s] + j for j in per_result]
return result
方法二:利用python自帶的模塊
import itertools def permutation(li): print(list(itertools.permutations(li)))
補(bǔ)充拓展:python實(shí)現(xiàn)四個(gè)數(shù)字的全排列
首先我們使用常規(guī)做法,循環(huán)交換完成。
lst = [1, 3, 5, 8]
for i in range(0, len(lst)):
lst[i], lst[0] = lst[0], lst[i]
for j in range(1, len(lst)):
lst[j], lst[1] = lst[1], lst[j]
for h in range(2, len(lst)):
print(lst)
lst[j], lst[1] = lst[1], lst[j]
lst[i], lst[0] = lst[0], lst[i]
如果列表較長,元素較多,以上常規(guī)方法實(shí)現(xiàn)起來就比較吃力了,以下我們采用遞歸方式實(shí)現(xiàn)。
def permutations(position):
if position == len(lst) - 1:
print(lst)
else:
for index in range(position, len(lst)):
lst[index], lst[position] = lst[position], lst[index]
permutations(position+1)
lst[index], lst[position] = lst[position], lst[index]
permutations(0)
以上這篇淺談python輸出列表元素的所有排列形式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python logging設(shè)置和logger解析
這篇文章主要介紹了Python logging設(shè)置和logger解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Python執(zhí)行外部命令subprocess的使用詳解
subeprocess模塊是python自帶的模塊,無需安裝,主要用來取代一些就的模塊或方法,本文通過實(shí)例代碼給大家分享Python執(zhí)行外部命令subprocess及使用方法,感興趣的朋友跟隨小編一起看看吧2021-05-05
人臉識(shí)別實(shí)戰(zhàn)之Opencv+SVM實(shí)現(xiàn)人臉識(shí)別
這篇文章主要介紹了通過Opencv+SVM實(shí)現(xiàn)人臉識(shí)別功能,文中的示例代碼介紹詳細(xì),對(duì)于我們學(xué)習(xí)人臉識(shí)別和OpenCV都有一定的幫助,感興趣的小伙伴可以學(xué)習(xí)一下2021-12-12
python pandas 對(duì)series和dataframe的重置索引reindex方法
今天小編就為大家分享一篇python pandas 對(duì)series和dataframe的重置索引reindex方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06
python 中Arduino串口傳輸數(shù)據(jù)到電腦并保存至excel表格
這篇文章主要介紹了python Arduino串口傳輸數(shù)據(jù)到電腦并保存至excel表格,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
Python實(shí)現(xiàn)自動(dòng)收集參數(shù)的技巧分享
在Python中,充分利用函數(shù)參數(shù)的自動(dòng)收集和靈活處理,是寫出高效且易維護(hù)代碼的關(guān)鍵之一,本文將深入研究Python函數(shù)參數(shù)的收集方式,感興趣的小伙伴可以了解下2023-12-12
python計(jì)算書頁碼的統(tǒng)計(jì)數(shù)字問題實(shí)例
這篇文章主要介紹了python計(jì)算書頁碼的統(tǒng)計(jì)數(shù)字問題實(shí)例,對(duì)比2個(gè)實(shí)例講述了數(shù)字統(tǒng)計(jì)的技巧,非常實(shí)用,需要的朋友可以參考下2014-09-09
Python中conda虛擬環(huán)境創(chuàng)建及使用小結(jié)
本文主要介紹了Python中conda虛擬環(huán)境創(chuàng)建及使用小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03
Pandas時(shí)間序列重采樣(resample)方法中closed、label的作用詳解
這篇文章主要介紹了Pandas時(shí)間序列重采樣(resample)方法中closed、label的作用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12

