笛卡尔积(product):
假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}
1 >>> for i in itertools.product({'a', 'b'},{1, 2, 3}):
2 ... print(i, end=' ')
3 ...
4 ('a', 1) ('a', 2) ('a', 3) ('b', 1) ('b', 2) ('b', 3)
5
6 >>> for i in itertools.product({1, 2, 3},{'a', 'b'}):
7 ... print(i, end=' ')
8 ...
9 (1, 'a') (1, 'b') (2, 'a') (2, 'b') (3, 'a') (3, 'b')
组合:combinations (有重复)
combinations_with_replacement(去除重复)
1 >>> import itertools
2 >>> for i in itertools.combinations('abcd', 2):
3 ... print(i, end='')
4 ...
5 ('a', 'b')('a', 'c')('a', 'd')('b', 'c')('b', 'd')('c', 'd')
6 >>> for i in itertools.combinations_with_replacement('abcd', 2):
7 ... print(i, end='')
8 ...
9 ('a', 'a')('a', 'b')('a', 'c')('a', 'd')('b', 'b')('b', 'c')('b', 'd')('c', 'c')('c', 'd')('d', 'd')
排列:permutations
1 >>> import itertools
2 >>> for i in itertools.permutations('abcd', 2):
3 ... print(i, end='')
4 ...
5 ('a', 'b')('a', 'c')('a', 'd')('b', 'a')('b', 'c')('b', 'd')('c', 'a')('c', 'b')('c', 'd')('d', 'a')('d', 'b')('d', 'c')