@Eliazz: Die Funktion hat als Rückgabewert einen Iterator (darum steckt die Funktion auch im Modul `itertools`) und *der* generiert die Kombinationen wenn man darüber iteriert, und zwar eine nach der anderen und nicht alle auf einmal:
Code: Alles auswählen
In [9]: itertools.combinations('ABCD', 2)
Out[9]: <itertools.combinations at 0x929189c>
In [10]: cs = itertools.combinations('ABCD', 2)
In [11]: next(cs)
Out[11]: ('A', 'B')
In [12]: next(cs)
Out[12]: ('A', 'C')
In [13]: next(cs)
Out[13]: ('A', 'D')
In [14]: next(cs)
Out[14]: ('B', 'C')
In [15]: next(cs)
Out[15]: ('B', 'D')
In [16]: next(cs)
Out[16]: ('C', 'D')
In [17]: next(cs)
---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
/home/bj/<ipython-input-17-2473a9b0b1c8> in <module>()
----> 1 next(cs)
StopIteration:
In [18]: cs = itertools.combinations('ABCD', 2)
In [19]: for c in cs:
....: print c
....:
('A', 'B')
('A', 'C')
('A', 'D')
('B', 'C')
('B', 'D')
('C', 'D')
In [20]: cs = itertools.combinations('ABCD', 2)
In [21]: list(cs)
Out[21]: [('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')]