python 中集合列表的笛卡尔积

Cartesian product of a list of sets in python

我有一个集合列表。我不知道先验列表的长度。我想在我正在编写的一些代码中找到列表中集合的笛卡尔积。

例如: 我有

list_of_sets=[set(['A']),set(['A','B','C']), set('D','E')];

我想输出这些集合的笛卡尔积,

('A', 'A', 'E')
('A', 'A', 'D')
('A', 'C', 'E')
('A', 'C', 'D')
('A', 'B', 'E')
('A', 'B', 'D')

如果我事先知道列表的大小为 3,我可以使用以下代码生成此笛卡尔积。

for i in itertools.product(list_of_sets[0],list_of_sets[1],list_of_sets[2]):
    print i

当我不知道列表的大小时,有没有简单的方法可以做到这一点?

使用itertools.product(*list_of_sets).