📅  最后修改于: 2020-05-05 05:50:08             🧑  作者: Mango
Python提供直接方法来查找序列的排列和组合。这些方法位于itertools软件包中。
# 一个使用库函数打印所有排列的Python程序
from itertools import permutations
# 获取[1、2、3]的所有排列
perm = permutations([1, 2, 3])
# 打印获得的排列
for i in list(perm):
print i
输出
(1, 2, 3)
(1, 3, 2)
(2, 1, 3)
(2, 3, 1)
(3, 1, 2)
(3, 2, 1)
它产生n!输入序列的长度为n时的排列。
如果要获取长度为L的排列,则以这种方式实现。
#一个Python程序,用于打印给定长度的所有排列
from itertools import permutations
# 获取长度为2的所有排列
perm = permutations([1, 2, 3], 2)
# 打印获得的排列
for i in list(perm):
print i
输出
(1, 2)
(1, 3)
(2, 1)
(2, 3)
(3, 1)
(3, 2)
它生成nCr * r!输入序列的长度为n并且输入参数为r时进行排列。
# 一个Python程序,用于打印给定长度的所有组合
from itertools import combinations
# 获取[1、2、3]和长度2的所有组合
comb = combinations([1, 2, 3], 2)
# 打印获得的组合
for i in list(comb):
print i
输出
(1, 2)
(1, 3)
(2, 3)
1,组合按输入的字典顺序排序。因此,如果输入列表已排序,则将按排序顺序生成组合元组。
# 一个Python程序,用于打印给定长度的所有组合以及未排序的输入。
from itertools import combinations
# 获取[2,1,3]和长度2的所有组合
comb = combinations([2, 1, 3], 2)
# 打印获得的组合
for i in list(comb):
print i
输出
(2, 1)
(2, 3)
(1, 3)
2,元素根据其位置而不是其价值被视为唯一。因此,如果输入元素是唯一的,则每个组合中将没有重复值。
#一个Python程序,用于打印给定长度的所有组合以及输入中的重复项
from itertools import combinations
# 获取[1,1,3]和长度2的所有组合
comb = combinations([1, 1, 3], 2)
# 打印获得的组合
for i in list(comb):
print i
输出:
(1, 1)
(1, 3)
(1, 3)
3,如果我们想将相同元素组合到相同元素,则使用combinations_with_replacement。
# 还包括一个Python程序,该程序可以打印所有具有元素对自身组合的组合
from itertools import combinations_with_replacement
# 获取[1、2、3]和长度2的所有组合
comb = combinations_with_replacement([1, 2, 3], 2)
# 打印获得的组合
for i in list(comb):
print i
输出
(1, 1)
(1, 2)
(1, 3)
(2, 2)
(2, 3)
(3, 3)