- 需求:有10个指标,每个指标有0、1两种结果,生成所有可能出现的情况。
- 解决:基于数学知识,我们很容易知道总共有组合数为2^10=1024种
那么使用python我们该如何用代码实现呢?
python中的函数为itertools.product
,可作为为求多个可迭代对象的笛卡尔积。
先来看一个样例:
import itertools
a = itertools.product([0, 1], repeat = 3) # 从0,1列表中,取数,重复3次
print(list(a)) # a是一个迭代器
相当于第一位的可能性有2种,第二位,第三位亦如此,故结果是2^3=8,结果如下:
[(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)]
需求中有10个指标,这里把repeat换为10即可:
下面再给一个“两两组合”的样例:
import itertools
a = itertools.product(['甲','乙','丙','丁'], ['A','B','C'], repeat = 1)
print(list(a))
组合共12个,结果如下:
[('甲', 'A'), ('甲', 'B'), ('甲', 'C'), ('乙', 'A'), ('乙', 'B'), ('乙', 'C'), ('丙', 'A'), ('丙', 'B'), ('丙', 'C'), ('丁', 'A'), ('丁', 'B'), ('丁', 'C')]
参考资料:python用itertools.product函数生成10位的0,1组合