一组python的幂集和笛卡尔积

Posted

技术标签:

【中文标题】一组python的幂集和笛卡尔积【英文标题】:Power set and Cartesian Product of a set python 【发布时间】:2012-05-07 17:56:37 【问题描述】:

我试图找到两个不同集合的笛卡尔积。我在网上找不到任何关于集合的笛卡尔积的任何东西,它要么是列表,要么是字典。

而且电源组也很混乱。

这些都没有在我一直在使用的书中。

你们中的一个能否指出我正确的方向。

【问题讨论】:

【参考方案1】:

对于笛卡尔积,请查看itertools.product

对于powerset,the itertools docs也给我们一个秘诀:

def powerset(iterable):
    "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
    s = list(iterable)
    return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))

例如:

>>> test = 1, 2, 3
>>> list(powerset(test))
[(), (1,), (2,), (3,), (1, 2), (1, 3), (2, 3), (1, 2, 3)]
>>> list(product(test, test))
[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]

【讨论】:

感谢您的编辑,它使我更加清楚我正在尝试将这些实现到我的代码中,目前我需要导入 itertools 吗?再次感谢! 是的,你需要从itertools导入你使用的函数,就像你从另一个模块使用的任何函数一样。 powerset 使用s = set(iterable) 可能会更好地定义。 @Darthfett:这将使它成为一个不太通用的解决方案。但是,是的,如果您纯粹使用集合,那会起作用。

以上是关于一组python的幂集和笛卡尔积的主要内容,如果未能解决你的问题,请参考以下文章

Python笛卡尔积和条件?

笛卡尔积

几个有用的python函数 (笛卡尔积, 排列, 组合)

Python-两个dataframe用for循环求笛卡尔积

Python小技巧:使用*解包和itertools.product()求笛卡尔积(转)

Tensorflow 中的笛卡尔积