作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些集合,我想对其进行笛卡尔积,效果很好。但是,我想删除这个新集合中在元素排列下相同的所有元素。
例如,拿下面的代码:
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/
我是一名优秀的程序员,十分优秀!