2011-01-21 30 views
1

我正在尋找一個函數來循環列表,這些列表會自動將結果放在一起併產生(內部)循環產生的每個結果。沒有看到任何來自Python標準庫的可識別候選人,結果如下loop函數。有沒有人知道任何可用的功能,做了類似的事情,或者是以更好的方式寫出來,而不是使用loop?在下面給出的代碼示例用法中,迭代迭代的順序並不重要,但是對於其他項目中的一般用法,可能最好是將順序列表中的收益列入其中。在Python的標準庫中是否有一個類似於循環函數的函數?

from itertools import permutations 

GROUPS = ('he', 'she'), ('man', 'woman'), ('male', 'female'), ('adam', 'eve') 

def main(): 
    for size in range(2, len(GROUPS) + 1): 
     for groups in permutations(GROUPS, size): 
      for items in loop(*groups): 
       print(''.join(items).capitalize()) 

def loop(*args): 
    head, tail = args[0], args[1:] 
    if tail: 
     for a in head: 
      for b in loop(*tail): 
       yield [a] + b 
    else: 
     for a in head: 
      yield [a] 

if __name__ == '__main__': 
    main() 

回答

4
+0

謝謝!在閱讀「itertools」模塊的文檔時,一定錯過了這一點。 – 2011-01-21 04:55:06

相關問題