2014-11-09 2 views
0

Я хочу, чтобы сделать список всех Возможных комбинаций спискаКомбинированного список питон

пример:

список = [1, 2, 3, 4]

и вывод должен дать мне : [[1], [2], [3], [4], [1, 2] ... [1, 2, 3, 4]]

(Я должен искать комбинацию, которая sum дает мне максимально возможное значение, которое меньше или равно переменной B, в этом случае, если B = 9, выход, который я хотел бы получить, - [2, 3, 4])

Мое текущее решение - использовать циклы, у которых есть значение, равное 0 или 1, когда значение == 1 число добавляется в список. Проблема заключается в том, что максимальное количество вложенных циклов ниже количества элементов в моем списке, оно довольно медленное, и это абсолютно не изящное решение.

Может кто-нибудь мне помочь?

+0

http://stackoverflow.com/questions/464864/ – jez

+0

Связанный: [Изготовление всех возможных комбинаций списка в Python] (http://stackoverflow.com/q/8371887/846892) –

ответ

0
from itertools import combinations,chain 

l= [1, 2, 3, 4] 
print(list(chain.from_iterable(map(list,combinations(l,i)) for i in range(1,len(l)+1)))) 
[[1], [2], [3], [4], [1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4], [1, 2, 3], [1, 2, 4], [1, 3, 4], [2, 3, 4], [1, 2, 3, 4]] 
Смежные вопросы