Python算法题,实现排列组合
遇到一个算法题,从列表a = [1,2,3,4,5,6]中任意抽取5个数,进行排序。共有多少结果。乍一看,这不是高中数的排序组合吗。再一看,就是排列组合。。。。
用到的库
import itertools
开始折腾半天,去处理列表啊,随机抽取啊,随机排序啊,for了好几层循环,最终还是没搞出来。后来随便一搜发现,自带了一个本地库itertools,用于排列组合。所以,有些日常的功能实现先去看有没有已经封装好的库。只是失去算法题的意义罢了
combinations 组合
![组合的公式](https://img-blog.csdnimg.cn/e32e546bb6ef4fa9acaf97ba433c8039.png)
print(list(itertools.combinations([1, 2, 3, 4,5,6], 5)))
执行结果:
[(1, 2, 3, 4, 5), (1, 2, 3, 4, 6), (1, 2, 3, 5, 6), (1, 2, 4, 5, 6), (1, 3, 4, 5, 6), (2, 3, 4, 5, 6)]
permutations 排列
print(list(itertools.permutations([1, 2, 3, 4,5,6], 5)))
执行结果:
[(1, 2, 3, 4, 5), (1, 2, 3, 4, 6), (1, 2, 3, 5, 4), (1, 2, 3, 5, 6), (1