python - 找到 N 个组中 N 个项目的所有组合,而没有重复的项目组合(python)?

标签 python math iteration

我正在尝试找出一种方法来计算某个产品的所有可能的功能组合,并将它们作为列表返回,不重复。

我将项目(产品的功能)以这种方式分组:

a
   a1
   a2
   a3

b
   b1
   b2

c
   c1
   c2
   c3
   c4

组和项目的数量未知,因此实际上有 N 个组和 N 个项目。

组合示例:

# Combinations with 3 groups
a1_b1_c1
a1_b2_c1
a1_b3_c1
...and so on

# Combinations with 4 groups
a1_b1_c1_d1
a1_b2_c1_d1
a1_b3_c1_d1
...and so on

我认为 a1_b2_c3a1_c3_b2 是重复的,并且我不希望返回的列表中有任何重复项。

没有所有功能的产品(例如 a1_b2b2)将不是有效的产品,因此我也不希望这些产品出现在返回的列表中。

我研究过 itertools 但我陷入困境。 有什么想法吗?

最佳答案

您肯定想要 itertools.product:

import itertools

for i in itertools.product(['a1','a2','a3'], ['b1','b2'],['c1','c2','c3','c4']):
    print '_'.join(i)

返回

a1_b1_c1
a1_b1_c2
a1_b1_c3
...
a3_b2_c1
a3_b2_c2
a3_b2_c3
a3_b2_c4

关于python - 找到 N 个组中 N 个项目的所有组合,而没有重复的项目组合(python)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19011276/

相关文章:

python - 如何获取pandas中两个日期之间的工作日数

java - Java 中的 ECEF 到 lla (lat,lon,alt)

python - 使用 SymPy 查找复数多项式的所有根

javascript - 如何在javascript中将字符串转换为对象数组

java - 查找连续出现两次的最大字符

javascript - 如何动态地在 React JSX 元素上设置属性?

python - coffeescript 字典设置为默认值

python - 如何在 Python 中将元组作为参数传递?

python - str(dict) 和 json.dumps(dict) 的区别

math - 在graphviz中使用符号字体/数学符号