摄影:产品经理
厨师:kingname
在一些比较简单的面试题中,可能需要你对给定的一些字符串或者数字遍历他们的所有排列组合。例如:
给定字母 a
b
c
,生成他们的所有排列:
abcacbbacbcdcabcac
对于这种排列问题,Python自带的 itertools
模块已经提供了解决方案:itertools.permutations
。其使用方法非常简单:
from itertools import permutations
example = 'abc'result = permutations(example)for answer in result: print(answer)
返回的数据是一个元组,只要对结果再join一下,就可以变成普通的字符串了:
对于组合,也有两个自带的方法:itertools.combinations
和 itertools.combinations_with_replacement
,其中前者不放回抽取,后者为放回抽取,例如:
from itertools import combinations, combinations_with_replacement
example = '1234'for answer in combinations(example, 3): print(answer)
for answer in combinations_with_replacement(example, 3): print(answer)
其运行效果如下图所示:
其中, combinations(example,3)
表示,从 example
变量中,任取3个字符进行组合。每个元素取出以后不放回。
combinations_with_replacement(example,3)
表示从 example
的变量中,取出3个字符,每个字符取出来以后,要放回。