2013-06-17 3 views
0

Я работаю над программой, которая будет давать все комбинации списка значений без повторения. Не имеет значения, как результат сортируется до тех пор, пока оба варианта [10, 9, 8] и [8, 9, 10] невозможны. Пока у меня есть часть кода, которая делает то, что я хочу, но я бы хотел, чтобы результат был в формате списка, а не в кортежах. Она использует функцию unordered_tuples из библиотеки шалфея, но все, что делает это возвращает список списков как так:Список списков, а не список кортежей - python

>from sage.all import unordered_tuples 
>tuples = unordered_tuples([10,9,8],2) 
>print tuples 
[[8, 8], [8, 9], [8, 10], [9, 9], [9, 10], [10, 10]] 

И:

from itertools import product 
def combos(): 
    dicti = {} 
    index = 0 
    for entry in [1,0,1,0]: 
     dicIndex = str('0')+str(index) 
     print dicIndex 
     if entry == 0: dicti[dicIndex] = [[0]] 
     else: dicti[str('0')+str(index)] = unordered_tuples([10,9,8],entry) 
     index += 1 
    lis = ['00','01','02','03'] 
    value = dicti[lis[0]] 
    print dicti 
    for index in lis[1:]: 
     value = product(value, dicti[index]) 
     if index == lis[-1]: 
      print list(value) 
      print 

Выход:

[((([8], [0]), [8]), [0]), ((([8], [0]), [9]), [0]), ((([8], [0]), [10]), [0]), ((([9], [0]), [8]), [0]), ((([9], [0]), [9]), [0]), ((([9], [0]), [10]), [0]), ((([10], [0]), [8]), [0]), ((([10], [0]), [9]), [0]), ((([10], [0]), [10]), [0])] 

хотите:

[[[8], [0], [8], [0]], [[8], [0], [9], [0]], [[8], [0], [10], [0]], [[9], [0], [8], [0]], [[9], [0], [9], [0]], [[9], [0], [10], [0]], [[10], [0], [8], [0]], [[10], [0], [9], [0]], [[10], [0], [10], [0]]] 
+0

Я не понимаю ни ввода, ни выхода. –

+0

Буду честно, я тоже. Один из моих коллег задал вопрос, и это именно то, что мне дали. Я спрошу ее завтра, чтобы сделать вопрос более понятным. – KevinShaffer

ответ

0

Я побежал int o аналогичная проблема при извлечении данных из базы данных PostgreSQL. Это метод, который я использовал.

def tupleToList(t): 
    l = [] 
    for i in xrange(len(t)): 
     l.append(list(t[i])) 
     pass 
    return l 
    pass 

Это работает для 2D-списков. Я работаю над их внедрением в списки 5D в вашем случае.

1
output = [[[tuple[0]], [0], [tuple[1]], [0]] for tuple in unordered_tuples([10,9,8],2)] 
Смежные вопросы