给定大小为n的数组,生成并打印数组中r个元素的所有可能组合。
例子:
Input : arr[] = [1, 2, 3, 4],
r = 2
Output : [[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]
该问题已存在递归解决方案,请参阅在大小为n的给定数组中打印r元素的所有可能组合。我们将使用itertools.combinations()模块在Python解决此问题。
itertools.combinations()有什么作用?
它从可迭代输入中返回元素的r个长度子序列。组合按字典顺序排序。因此,如果对输入的iterable进行排序,则将按排序顺序生成组合元组。
- itertools.combinations(iterable,r):
它按排序顺序返回r长度元组,没有重复的元素。例如,combinations(’ABCD’,2)==> [AB,AC,AD,BC,BD,CD]。 - itertools.combinations_with_replacement(iterable,r):
它返回具有重复元素的排序长度的r长度元组。例如,combinations_with_replacement(’ABCD’,2)==> [AA,AB,AC,AD,BB,BC,BD,CC,CD,DD]。# Function which returns subset or r length from n from itertools import combinations def rSubset(arr, r): # return list of all subsets of length r # to deal with duplicate subsets use # set(list(combinations(arr, r))) return list(combinations(arr, r)) # Driver Function if __name__ == "__main__": arr = [1, 2, 3, 4] r = 2 print (rSubset(arr, r))
输出:
[[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]