pythondeitertools模块下提供了一些用于生成排列组合的工具函数。
- product(p, q, … [repeat=1]):用序列p、q、...序列中的元素进行排列(元素会重复)。就相当于使用嵌套循环组合。
- permutations(p[, r]):从序列p中取出r个元素的组成全排列,组合得到元组作为新迭代器的元素。
- combinations(p, r):从序列p中取出r个元素组成全组合,元素不允许重复,组合得到元组作为新迭代器的元素。
- combinations_with_replacement(p,r),从序列p中取出r个元素组成全组合,元素允许重复,组合得到元组作为新迭代器的元素。
其中combinations为常用的函数:
import itertools
list1 = [1, 3, 4, 5]
list2 = list(itertools.combinations(list1, 2))
print(list2)
返回结果:
[(1, 3), (1, 4), (1, 5), (3, 4), (3, 5), (4, 5)]