2017-03-25 2 views

Antwort

4

Sie itertools.combinations verwenden können, um die Kombinationen zu erhalten:

>>> import itertools 
>>> xs = [1, 2, 3] 

>>> itertools.combinations(xs, 2) # returns an iterator 
<itertools.combinations object at 0x7f88f838ff48> 
>>> list(itertools.combinations(xs, 2)) # yields 2-length subsequences 
[(1, 2), (1, 3), (2, 3)] 


>>> for i in range(0, len(xs) + 1): # to get all lengths: 0 to 3 
...  for subset in itertools.combinations(xs, i): 
...   print(list(subset)) 
... 
[] 
[1] 
[2] 
[3] 
[1, 2] 
[1, 3] 
[2, 3] 
[1, 2, 3] 

mit Liste Verständnis kombinieren, erhalten Sie, was Sie wollen:

>>> [list(subset) for i in range(0, len(xs) + 1) 
        for subset in itertools.combinations(xs, i)] 
[[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]] 
+0

Ohne die Kombinationen, gibt es noch eine andere Alternative –

+0

@RISHABHBANSAL, so weit ich weiß, mit 'itertools.com Doppelungen ist am einfachsten. Ohne es müssen Sie eine rekursive Funktion ausführen. – falsetru

Verwandte Themen