真新しい Python 2.6 では、 iterables のデカルト積を返す itertools モジュールを使用した標準ソリューションがあります。
import itertools
print list(itertools.product([1,2,3], [4,5,6]))
[(1, 4), (1, 5), (1, 6),
(2, 4), (2, 5), (2, 6),
(3, 4), (3, 5), (3, 6)]
"repeat" 引数を指定して、 iterable とそれ自体で積を実行できます。
print list(itertools.product([1,2], repeat=3))
[(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2),
(2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]
組み合わせで何かを微調整することもできます:
print list(itertools.combinations('123', 2))
[('1', '2'), ('1', '3'), ('2', '3')]
順序が重要な場合は、順列があります:
print list(itertools.permutations([1,2,3,4], 2))
[(1, 2), (1, 3), (1, 4),
(2, 1), (2, 3), (2, 4),
(3, 1), (3, 2), (3, 4),
(4, 1), (4, 2), (4, 3)]
もちろん、これらすべての優れた機能がまったく同じことを行うわけではありませんが、問題を解決するために何らかの方法でそれらを使用できます。
list()、tuple()、および set() を使用して、タプルまたはリストをセットに、またはその逆に変換できることを覚えておいてください。