2016-10-31 3 views
-1

Ich versuche, ein Programm zu schreiben, um Unterliste einer Liste zurückzugeben, d.h. für eine Liste [1,2,3] sollte das Programm [1],[2],[3],[1,2],[2,3] and [1,2,3] zurückgeben.Python kombinatorisches algorithmisches Programm zum Zurückgeben von Unterliste einer Liste

Ich kenne das Konzept des Wörterbuchs sowie von der Liste getrennt. Kann mich also jemand anweisen, wie ich dieses Problem lösen kann, damit ich das gleiche Konzept bei anderen ähnlichen Problemen umsetzen kann?

Antwort

0

Es ist eine Implementierung 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)] 

Wenn Sie nicht das leere Element wollen:

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

Gibt es nicht andere Möglichkeit, dies alles ohne den Import zu tun? Nur mit For-Schleife oder Rekursion? –

+0

@ShrijanAryal natürlich, aber ich bin mir nicht sicher, warum Sie das tun würden. – rofls

+0

Ist das Hausaufgabe, oder Sie versuchen nur zu verstehen, wie der Algorithmus funktionieren würde? – rofls

Verwandte Themen