代码之家  ›  专栏  ›  技术社区  ›  George Sp

具有包含重复元组的Python3置换

  •  3
  • George Sp  · 技术社区  · 7 年前

    我想创建具有重复元素的元组的所有可能组合。

    例如,假设我们有{3,3,0}。 我希望代码返回: (3,3,0) (3,0,3) (0,3,3)

    我查看了itertools文档和许多堆栈溢出问题,但没有找到答案。

    我如何实现它?或者,这可以普遍实施吗?

    2 回复  |  直到 7 年前
        1
  •  2
  •   Mureinik    7 年前

    你可以用 permutations 从itertools,然后使用 set 要删除任何双线:

    result = set(permutations((3, 3, 0)))
    
        2
  •  2
  •   pylang    7 年前

    使用 more_itertools ,第三方图书馆:

    > pip install more_itertools

    密码

    import more_itertools as mit
    
    
    iterable = (3, 3, 0)
    list(mit.distinct_permutations(iterable))
    # [(3, 3, 0), (3, 0, 3), (0, 3, 3)]
    

    看见 more_itertools docs 详细信息。