2016-10-31 44 views
-1

我想寫一個程序返回列表的子列表,即列表[1,2,3],程序應該返回[1],[2],[3],[1,2],[2,3] and [1,2,3]Python組合算法程序返回列表子列表

我知道字典的概念,以及除了列表。那麼,有人可以指導我如何解決這個問題,以便我可以在其他類似問題中實施相同的概念?

回答

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)] 
+0

是不是有其他的方式來做到這一點沒有進口任何物件?只需使用for循環或遞歸? –

+0

@ShrijanAryal當然,但我不知道你爲什麼要這樣做。 – rofls

+0

這個功課,或者你只是想了解算法是如何工作的? – rofls