python中的笛卡尔积,但不是成对的集合

时间:2017-09-25 19:30:28

标签: python

如何在python中找到两组字符之间的所有组合,有点像笛卡尔积,但我不希望有成对但是组合的子集。

例如:

我们说我们有两套有三个要素

a = {"a", "b", "c"}
b = {"a", "b", "c"}

我如何获得此输出:

c = {{"a", "a"}, {"a", "b"}, {"a", "c"}, {"b", "a"}, {"b", "b"}, {"b", "c"}, {"c", "a"}, {"c", "b"}, {"c", "c"}}

1 个答案:

答案 0 :(得分:0)

您将无法获得所要求的输出,因为 - 例如{' a',' a'}无效值(设置不允许重复和此值只会是' a')。

但是,您可以通过创建一组元组来实现您的目标:

set([(x, y) for x in a for y in b])

output: {('b', 'a'), ('a', 'a'), ('b', 'b'), ('a', 'b'), ('c', 'b'), 
         ('c', 'c'), ('b', 'c'), ('a', 'c'), ('c', 'a')}