python - 在 Python 的排列下没有元素相同的集合的笛卡尔积

标签 python list set combinatorics

我有一些集合,我想对其进行笛卡尔积,效果很好。但是,我想删除这个新集合中在元素排列下相同的所有元素。

例如,拿下面的代码:

import itertools as ittools
x = 2
y = 3
z = 5

flist = list(ittools.product([x,y,z],repeat=3))

for f in flist:
    print reduce(lambda a,b: a*b, f)

此代码找到集合 {2,3,5} 的笛卡尔积,并返回结果集中每个元素的所有三个分量的乘积。但是,有些数字会出现多次,例如 12 可以写成 2*2*3、2*3*2 或 3*2*2。我想删除所有这些重复项中的一个实例。

我知道这基本上是一个组合问题,但这似乎在 Python 中可能有一个不错的解决方案,它不涉及像我在这里所做的那样额外传递列表以计算笛卡尔的每个元素的一些标识符产品。

最佳答案

你想要combinations_with_replacement ,不是产品:

itertools.combinations_with_replacement([x, y, z], 3)

关于python - 在 Python 的排列下没有元素相同的集合的笛卡尔积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44958480/

相关文章:

javascript - Express.js不是 `res.send`集吗?

python - Pandas Groupby 按唯一键除以序列中的最后一个

python - 查看列中的值是否包含 Pandas 数据框中的 %

c# - 获取列表中属性设置为相同值的所有项目

c# - 使用 C# 从 newtonsoft JSON 中提取嵌套值

python - 仅保留列表的唯一实例,唯一的区别是顺序

python - 如何在 Python 3 中使用过滤器、映射和归约

python - 如何从具有特定值的字典中提取随机键?

java - 我如何使用 url 将 list<String> 传递到服务器

python - 具有不同哈希和排序键的有序元组集