首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python(使用Itertools)中生成所有不同的组合(其中输入元素重复)?

如何在Python(使用Itertools)中生成所有不同的组合(其中输入元素重复)?
EN

Stack Overflow用户
提问于 2019-04-30 08:04:34
回答 3查看 302关注 0票数 1

我有一组数字[1, 2, 4, 1]。现在,我想从这个大小为k(例如k= 3)的集合中生成所有可能的组合。所有生成的输出集不能重复

示例:[1, 2, 1][2, 1, 1]是相同的集合,但不应选择它们。它们中只有一个应该出现。在Python中使用itertools的组合是可能的吗?

代码语言:javascript
运行
复制
import itertools
x = [1, 2, 1]
print([p for p in itertools.product(x, repeat=3)])

我尝试过使用itertools.product,但它不起作用,使用itertools中的组合会得到重复的结果

我尝试过使用itertools.combinations print([p for p in set(itertools.combinations(x, r=3))])

如果我给出以下输入

代码语言:javascript
运行
复制
  x =  [-1, 0, 1, 2, -1, -4]

R=3时生成的输出为

代码语言:javascript
运行
复制
[(0, -1, -4), (-1, -1, -4), (-1, 1, -4), (0, 2, -1), (-1, 0, 2), (-1, 2, -4), (0, 1, 2), (2, -1, -4), (-1, 0, -1), (0, 1, -4), (1, 2, -4), (-1, 0, 1), (-1, 1, 2), (0, 2, -4), (-1, 1, -1), (-1, 2, -1), (1, 2, -1), (0, 1, -1), (-1, 0, -4), (1, -1, -4)]

(-1, 0, 1)(0, 1, -1)是具有相同组合的重复集合。我不确定如何克服这一点。

EN

Stack Overflow用户

发布于 2019-04-30 08:25:42

如何获得组合,然后通过在字典中键入组合的frozenset结果来只获取唯一的组合呢?在创建dictionary之前,这将只使用生成器。

代码语言:javascript
运行
复制
combs1, combs2 = itertools.tee(itertools.combinations(x, r=3))
res = list(dict(zip(map(frozenset, combs1), combs2)).values())
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55912262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档