需求:有10个指标,每个指标有阴阳两种结果,生成它们的可能性。
解决:总共有组合数为2^10=1024种
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即可。
![](https://img.haomeiwen.com/i7468301/45ef1c0f295fcf0a.png)
两两组合
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')]
网友评论