2011-01-21 21 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'モジュールのドキュメントを読んでいる間、それを見逃していたはずです。 –

+0

'itertools'は非常に複雑で、多くの関数は非明白な使い方をしています(ただしこれは一つではありません)。 –

関連する問題