itertools 里面封装了好多有用的函数,让我们一起来看一看。
- product(*iterables, repeat=1) --> product object
进行笛卡尔积
import itertools
for i in itertools.product('ABCD', repeat = 2):
print (''.join(i),end=' '
*********** 结果分割线 **************
AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD
- permutations(iterable[, r]) --> permutations object
排列问题
import itertools
for i in itertools.permutations('ABCD', 2):
print (''.join(i),end=' ')
*********** 结果分割线 **************
AB AC AD BA BC BD CA CB CD DA DB DC
- combinations(iterable, r) --> combinations object
组合问题
import itertools
for i in itertools.combinations('ABCD', 3):
print (''.join(i), end=' ')
*********** 结果分割线 **************
ABC ABD ACD BCD
有这样一道题:
Input: k = 3, n = 9
Output: [[1,2,6], [1,3,5], [2,3,4]]
找到所有和为 9 的列表,满足长度为 3,且列表中数字不大于 9。可以采用 combinations
# 一个列表解析式搞定
[c for c in combinations(range(1,10), 3) if sum(c) == 10]
- combinations_with_replacement(iterable, r)
--> combinations_with_replacement object
包含自身重复的组合
import itertools
for i in itertools.combinations_with_replacement('ABCD', 3):
print (''.join(i),end=' ')
*********** 结果分割线 **************
AAA AAB AAC AAD ABB ABC ABD ACC ACD ADD BBB BBC BBD BCC BCD BDD CCC CCD CDD
网友评论