import itertools
b = [('a', -1), ('b', 'b1'), ('c', 'cs')]
#笛卡尔积
list(itertools.product(*b))
[('a', 'b', 'c'),
('a', 'b', 'cs'),
('a', 'b1', 'c'),
('a', 'b1', 'cs'),
(-1, 'b', 'c'),
(-1, 'b', 'cs'),
(-1, 'b1', 'c'),
(-1, 'b1', 'cs')]
#排列
list(itertools.permutations(b, 2))
[(('a', -1), ('b', 'b1')),
(('a', -1), ('c', 'cs')),
(('b', 'b1'), ('a', -1)),
(('b', 'b1'), ('c', 'cs')),
(('c', 'cs'), ('a', -1)),
(('c', 'cs'), ('b', 'b1'))]
#组合,没有重复
list(itertools.combinations(b, 2))
[(('a', -1), ('b', 'b1')),
(('a', -1), ('c', 'cs')),
(('b', 'b1'), ('c', 'cs'))]
#组合,有重复
list(itertools.combinations_with_replacement(b, 2))
[(('a', -1), ('a', -1)),
(('a', -1), ('b', 'b1')),
(('a', -1), ('c', 'cs')),
(('b', 'b1'), ('b', 'b1')),
(('b', 'b1'), ('c', 'cs')),
(('c', 'cs'), ('c', 'cs'))]