Python组合算法程序返回列表的子列表

时间:2016-10-31 03:18:31

标签: python algorithm

我正在尝试编写一个程序来返回列表的子列表,即列表[1,2,3],程序应该返回[1],[2],[3],[1,2],[2,3] and [1,2,3]

除了列表之外,我也知道字典的概念。那么,有人可以告诉我如何解决这个问题,以便我可以在其他类似问题中实现相同的概念吗?

1 个答案:

答案 0 :(得分:0)

有一个实施here

from itertools import chain, combinations

def powerset(iterable):
  xs = list(iterable)
  # note we return an iterator rather than a list
  return chain.from_iterable( combinations(xs,n) for n in range(len(xs)+1) )

>>> list(powerset([1,2,3]))
[(), (1,), (2,), (3,), (1, 2), (1, 3), (2, 3), (1, 2, 3)]

如果你不想要空元素:

>>> list(filter(lambda x: len(x) >= 1, powerset([1,2,3])))
[(1,), (2,), (3,), (1, 2), (1, 3), (2, 3), (1, 2, 3)]