python 排列组合

笛卡尔积(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'
posted @ 2018-11-13 14:04  天上掉下来的林~~  阅读(475)  评论(0)    收藏  举报