这是一个python自带的工具集,简单好用功能强大,能够大大提升编写代码效率。
功能不止排列组合,其他的用用加深理解了再整理。
官方文档:https://docs.python.org/zh-cn/3/library/itertools.html
1.1、itertools.permutations()
所有可能的排列,元素不可以重复出现,第一个元素是字符集,第二个元素是组合的长度。
itertools.permutations('ABCD', 2)——>AB AC AD BA BC BD CA CB CD DA DB DC
import itertools
chars='qwer'
for comb in itertools.permutations(chars,4):
print(comb)
('q', 'w', 'e', 'r')('q', 'w', 'r', 'e')('q', 'e', 'w', 'r')('q', 'e', 'r', 'w')
('q', 'r', 'w', 'e')('q', 'r', 'e', 'w')('w', 'q', 'e', 'r')('w', 'q', 'r', 'e')
('w', 'e', 'q', 'r')('w', 'e', 'r', 'q')('w', 'r', 'q', 'e')('w', 'r', 'e', 'q')
('e', 'q', 'w', 'r')('e', 'q', 'r', 'w')('e', 'w', 'q', 'r')('e', 'w', 'r', 'q')
('e', 'r', 'q', 'w')('e', 'r', 'w', 'q')('r', 'q', 'w', 'e')('r', 'q', 'e', 'w')
('r', 'w', 'q', 'e')('r', 'w', 'e', 'q')('r', 'e', 'q', 'w')('r', 'e', 'w', 'q')
1.2、itertools.product()
所有可能的排列,元素是可以重复出现的,第一个元素是字符集,第二个元素是组合的长度,加“repeat=”。
itertools.product('ABCD', repeat=2)——>AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD
import itertools
chars='qw'
for comb in itertools.product(chars,repeat=4):
print(comb)
('q', 'q', 'q', 'q')('q', 'q', 'q', 'w')('q', 'q', 'w', 'q')('q', 'q', 'w', 'w')
('q', 'w', 'q', 'q')('q', 'w', 'q', 'w')('q', 'w', 'w', 'q')('q', 'w', 'w', 'w')
('w', 'q', 'q', 'q')('w', 'q', 'q', 'w')('w', 'q', 'w', 'q')('w', 'q', 'w', 'w')
('w', 'w', 'q', 'q')('w', 'w', 'q', 'w')('w', 'w', 'w', 'q')('w', 'w', 'w', 'w')
1.3、itertools.combinations()
字符出现顺序限制为和字符集字符顺序一致的所有可能排列,不出现重复元素。
itertools.combinations('ABCD', 2)——>AB AC AD BC BD CD
import itertools
chars='qwerty'
for comb in itertools.combinations(chars,4):
print(comb)
('q', 'w', 'e', 'r')('q', 'w', 'e', 't')('q', 'w', 'e', 'y')('q', 'w', 'r', 't')
('q', 'w', 'r', 'y')('q', 'w', 't', 'y')('q', 'e', 'r', 't')('q', 'e', 'r', 'y')
('q', 'e', 't', 'y')('q', 'r', 't', 'y')('w', 'e', 'r', 't')('w', 'e', 'r', 'y')
('w', 'e', 't', 'y')('w', 'r', 't', 'y')('e', 'r', 't', 'y')
1.4、itertools.combinations_with_replacement()
字符出现顺序限制为和字符集字符顺序一致的所有可能排列,重复元素会出现。
itertools.combinations_with_replacement('ABCD', 2)——>AA AB AC AD BB BC BD CC CD DD
import itertools
chars='qwer'
for comb in itertools.combinations_with_replacement(chars,4):
print(comb)
('q', 'q', 'q', 'q')('q', 'q', 'q', 'w')('q', 'q', 'q', 'e')('q', 'q', 'q', 'r')
('q', 'q', 'w', 'w')('q', 'q', 'w', 'e')('q', 'q', 'w', 'r')('q', 'q', 'e', 'e')
('q', 'q', 'e', 'r')('q', 'q', 'r', 'r')('q', 'w', 'w', 'w')('q', 'w', 'w', 'e')
('q', 'w', 'w', 'r')('q', 'w', 'e', 'e')('q', 'w', 'e', 'r')('q', 'w', 'r', 'r')
('q', 'e', 'e', 'e')('q', 'e', 'e', 'r')('q', 'e', 'r', 'r')('q', 'r', 'r', 'r')
('w', 'w', 'w', 'w')('w', 'w', 'w', 'e')('w', 'w', 'w', 'r')('w', 'w', 'e', 'e')
('w', 'w', 'e', 'r')('w', 'w', 'r', 'r')('w', 'e', 'e', 'e')('w', 'e', 'e', 'r')
('w', 'e', 'r', 'r')('w', 'r', 'r', 'r')('e', 'e', 'e', 'e')('e', 'e', 'e', 'r')
('e', 'e', 'r', 'r')('e', 'r', 'r', 'r')('r', 'r', 'r', 'r')