test = ["a","b","c","d","e"]

def xuniqueCombinations(items, n):
    if n==0: yield []
    else:
        for i in xrange(len(items)-n+1):
            for cc in xuniqueCombinations(items[i+1:],n-1):
                yield [items[i]]+cc

x = xuniqueCombinations(test, 3)
print x

Выходы

"generator object xuniqueCombinations at 0x020EBFA8"

Я хочу увидеть все комбинации, которые он нашел. Как я могу это сделать?

11
Alex 14 Сен 2010 в 20:21

4 ответа

Лучший ответ

Леолук прав, вам нужно перебирать его. Но вот правильный синтаксис:

combos = xuniqueCombinations(test, 3)
for x in combos:
    print x

Кроме того, вы можете сначала преобразовать его в список:

combos = list(xuniqueCombinations(test, 3))
print combos
17
Colin Gislason 14 Сен 2010 в 16:34

Это объект генератора. Получите доступ, перебирая его:

for x in xuniqueCombinations:
    print x
4
leoluk 14 Сен 2010 в 16:23

Возможно, будет полезно взглянуть на модуль pprint: http://docs.python.org/library /pprint.html, если вы используете Python 2.7 или более:

from pprint import pprint
pprint(x)
-3
cpf 14 Сен 2010 в 16:25
x = list(xuniqueCombinations(test, 3))
print x

Преобразовать ваш генератор в список и распечатать ......

0
shahjapan 14 Сен 2010 в 16:46