第一种
itertools.permutations() ,它接受一个集合并产生一个元组序列,每个元组由集合中所有元素的一个可能排列组成。也就是说通过打乱集合中元素排列顺序生成一个元组

items = ['a', 'b', 'c']
from itertools import permutations

for p in permutations(items):
    print(p)

# 指定序列的长度
# for p in permutations(items, 2):
#     print(p)

结果:

('a', 'b', 'c')
('a', 'c', 'b')
('b', 'a', 'c')
('b', 'c', 'a')
('c', 'a', 'b')
('c', 'b', 'a')

第二种
使用 itertools.combinations() 可得到输入集合中元素的所有的组合。

from itertools import combinations

items = ['a', 'b', 'c']
for c in combinations(items,2):
    print(c)

#for c in combinations(items, 3):
#    print(c)

结果

('a', 'b')
('a', 'c')
('b', 'c')

第三种
函 数 itertools.combinations_with_replacement() 允许同一个元素被选择多次

items = ['a', 'b', 'c']
from itertools import combinations_with_replacement


for a in combinations_with_replacement(items, 3):
    print(a)

结果:

('a', 'a', 'a')
('a', 'a', 'b')
('a', 'a', 'c')
('a', 'b', 'b')
('a', 'b', 'c')
('a', 'c', 'c')
('b', 'b', 'b')
('b', 'b', 'c')
('b', 'c', 'c')
('c', 'c', 'c')
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐