Python 的庫函數里有沒有現成的全排列函數?

例如如下的場景:

----------------------------------------------

as = [1,2,3]

bs = ["a","b","c"]

cs = ["o","r","z"]

for a in as:

  for b in bs:

    for c in cs:

      do_something(a,b,c)

----------------------------------------------

如果有這樣一個輸出全排列的函數就方便多了:

----------------------------------------------

fullarr(as, bs, cs):

  for a in as:

    for b in bs:

      for c in cs:

        yield a,b,c

----------------------------------------------

然後就可以直接:

----------------------------------------------

for a,b,c in fullarr(as, bs, cs):

  do_something(a,b,c)

----------------------------------------------

python里有很多有用的庫函數,而且一般來說效率較自己寫起來要高。想問問有沒有現成的實現這種全排列的呢?


這個就行

&>&>&> for i in itertools.permutations("abcd",4):

print "".join(i)


在itertools模塊 裡面

product函數


itertools里就有…全排列就靠permutation了,參數是個可迭代量,返回值是個迭代器。

當然也有部分排列、組合、部分組合之類的。


print list(itertools.combinations(["a","b","c"],2))
[("a", "b"), ("a", "c"), ("b", "c")]

combinations()函數返回的是這樣的列表。無重複的。


推薦閱讀:

怎樣從零開始用 Python 寫一個貪吃蛇?
python3.5 pip安裝庫,無法找到vcvarsall.bat錯誤?裝VS、改源碼無效
用python寫程序時,怎麼知道我想實現的功能有沒有現成的函數?
python爬蟲如何深入學習?

TAG:編程語言 | Python | 編程 | 腳本 | 腳本語言 | 編程技巧 | Python庫 |