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()
ありがとう! 'itertools'モジュールのドキュメントを読んでいる間、それを見逃していたはずです。 –
'itertools'は非常に複雑で、多くの関数は非明白な使い方をしています(ただしこれは一つではありません)。 –