Python語言的全排列怎麼提速?
從n個不同元素中任取m(m≤n)個元素,按照一定的順序排列起來,叫做從n個不同元素中取出m個元素的一個排列。當m=n時所有的排列情況叫全排列。顯然全排列很費時,這裡用到了yield方法,全排列速度加倍
什麼是yield()方法?
首先,如果你還沒有對yield有個初步分認識,那麼你先把yield看做“return”,這個是直觀的,它首先是個return,普通的return是什麼意思,就是在程式中返回某個值,返回之後程式就不再往下執行了。看做return之後再把它看做一個是生成器(generator)的一部分(帶yield的函式才是真正的迭代器),好了,如果你對這些不明白的話,那先把yield看做return,然後直接看下面的程式,你就會明白yield的全部意思了:
def foo(): print("starting...") while True: res = yield 4 print("res:",res) g = foo() print(next(g)) print("*"*20) print(next(g))
程式碼的輸出:
starting... 4 ******************** res: None
使用yield()方法的全排列:
def perm(arr, pos = 0): if pos == len(arr): yield arr for i in range(pos, len(arr)): arr[pos], arr[i] = arr[i], arr[pos] for _ in perm(arr, pos + 1): yield _ arr[pos], arr[i] = arr[i], arr[pos] for i in perm([1,2,3,4]): print i
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4606/viewspace-2837430/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 怎麼學python程式語言?Python
- Python語言怎麼樣?為什麼學Python?Python
- 常見的程式語言python怎麼樣?各程式語言有什麼區別?Python
- 字串的全排列字串
- Python語言怎麼把列表轉為字串?Python字串
- 什麼是Python?python是一門怎樣的程式語言?Python
- Python語言怎麼樣?學習Python好不好?Python
- Python是什麼語言?Python底層語言是什麼?Python
- 學習程式語言選擇Python怎麼樣?Python
- 字串全排列字串
- Python是現在流行的程式語言嗎?前景怎麼樣?Python
- python語言與其他語言有什麼不同?Python
- ot 多語言怎麼配置?
- 指令碼語言怎麼理解指令碼
- python語言是什麼Python
- C語言學習方法,怎麼學習C語言?C語言
- Python對比其他語言有什麼好處?Python就業怎麼樣?Python就業
- python的with語句怎麼使用Python
- 有重複元素的全排列
- 大資料全棧式開發語言 – Python大資料全棧Python
- 全排列演算法演算法
- Java實現-全排列Java
- 演算法——全排列演算法
- Python語言的發展背景是什麼?Python
- win10 怎麼改預設輸入語言_怎麼修改win10的輸入預設語言Win10
- go與其他語言有什麼區別?學習go語言怎麼樣Go
- 實現自然數N的全排列
- python語言的優點是什麼?python開發Python
- Day 28 | 491.遞增子序列 、46.全排列、 47.全排列 II
- Python語言與其他語言有什麼不同?優勢介紹Python
- 【Algorithm】全排列演算法Go演算法
- JavaScript陣列元素全排列JavaScript陣列
- 字串全排列 java實現字串Java
- python的輸出語句怎麼寫Python
- win10語言欄ch怎麼去掉_win10的語言欄中有CH怎樣刪除Win10
- 蘋果新發布的程式語言雨燕怎麼樣?蘋果
- 看看牛人們是怎麼評價程式語言的
- python和c語言的區別是什麼PythonC語言