首页 > 解决方案 > 如何解决这个排列编码问题?

问题描述

我记得在 Leetcode 中看到过一次,但不确定是哪一个。这就是问题所在。

我有一个清单['a','b','c']。并且通过排列,我希望得到一个带有给定列表的各种可能列表组合的结果。

预期的

result = [['a'],['b'],['c'],
          ['a','b'],['b','c'],['a','c'],
          ['a','b','c']]

如果['a','b','c','d'],它应该是

result = [['a'],['b'],['c'],['d'],
          ['a','b'],['a','c'],['a','d'],['b','c'],['b','d'],['c','d'],
          ['a','b','c'],['a','b','d'],['a','c','d'],['b','c','d'],
          ['a','b','c','d'],
]

如果我能从你们那里得到任何灵感,我将不胜感激。

标签: pythoncombinationspermutation

解决方案


您可以使用itertools.combinations它来实现:

from itertools import combinations

l = ['a', 'b', 'c', 'd']

c = [list(combinations(l, i)) for i in range(1, len(l) + 1)]
>>> c
[[('a',), ('b',), ('c',), ('d',)],
 [('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd')],
 [('a', 'b', 'c'), ('a', 'b', 'd'), ('a', 'c', 'd'), ('b', 'c', 'd')],
 [('a', 'b', 'c', 'd')]]

推荐阅读