📌  相关文章
📜  Python的itertools.combinations()模块可打印所有可能的组合

📅  最后修改于: 2021-04-29 16:43:03             🧑  作者: Mango

给定大小为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]]