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
- python語言是什麼Python
- Python對比其他語言有什麼好處?Python就業怎麼樣?Python就業
- 字串全排列字串
- python的with語句怎麼使用Python
- 指令碼語言怎麼理解指令碼
- ot 多語言怎麼配置?
- python語言的優點是什麼?python開發Python
- C語言學習方法,怎麼學習C語言?C語言
- Python語言的發展背景是什麼?Python
- Python是什麼?Python成為熱門語言的原因!Python
- Python屬於什麼型別的語言?Python影片課!Python型別
- 有重複元素的全排列
- python和c語言的區別是什麼PythonC語言
- Python語言與其他語言有什麼不同?優勢介紹Python
- win10 怎麼改預設輸入語言_怎麼修改win10的輸入預設語言Win10
- Leetcode——46. 全排列LeetCode
- leetcode:全排列(java回溯)LeetCodeJava
- LeetCode系列46—全排列LeetCode
- 全排列演算法演算法
- 演算法——全排列演算法
- 【LeetCode】46. 全排列LeetCode
- LeetCode-046-全排列LeetCode
- python的輸出語句怎麼寫Python
- go與其他語言有什麼區別?學習go語言怎麼樣Go
- 【leetcode】60. Permutation Sequence 全排列的第k位序的排列形式LeetCode
- Python程式設計基礎(一)程式語言是什麼?編譯型語言和解釋型語言的區別|Python是什麼?Python程式設計編譯
- python怎麼寫try語句Python
- win10語言欄ch怎麼去掉_win10的語言欄中有CH怎樣刪除Win10