-1
我想寫一個程序返回列表的子列表,即列表[1,2,3]
,程序應該返回[1],[2],[3],[1,2],[2,3] and [1,2,3]
。Python組合算法程序返回列表子列表
我知道字典的概念,以及除了列表。那麼,有人可以指導我如何解決這個問題,以便我可以在其他類似問題中實施相同的概念?
我想寫一個程序返回列表的子列表,即列表[1,2,3]
,程序應該返回[1],[2],[3],[1,2],[2,3] and [1,2,3]
。Python組合算法程序返回列表子列表
我知道字典的概念,以及除了列表。那麼,有人可以指導我如何解決這個問題,以便我可以在其他類似問題中實施相同的概念?
有一個實現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)]
是不是有其他的方式來做到這一點沒有進口任何物件?只需使用for循環或遞歸? –
@ShrijanAryal當然,但我不知道你爲什麼要這樣做。 – rofls
這個功課,或者你只是想了解算法是如何工作的? – rofls