Как получить все возможные комбинации элементов списка?

367
задан martineau 25 October 2016 в 06:20
поделиться

2 ответа

Взгляните на itertools.combinations:

itertools.combinations(iterable, r)

Возврат r подпоследовательности длины элементов от повторяемого входа.

Комбинации испускаются в лексикографическом порядке сортировки. Так, если повторяемый вход будет отсортирован, кортежи комбинации будут произведены в отсортированном порядке.

С тех пор 2.6, батареи включены!

408
ответ дан James Brady 23 November 2019 в 00:06
поделиться
flag = 0
requiredCals =12
from itertools import chain, combinations

def powerset(iterable):
    s = list(iterable)  # allows duplicate elements
    return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))

stuff = [2,9,5,1,6]
for i, combo in enumerate(powerset(stuff), 1):
    if(len(combo)>0):
        #print(combo , sum(combo))
        if(sum(combo)== requiredCals):
            flag = 1
            break
if(flag==1):
    print('True')
else:
    print('else')

-1
ответ дан 23 November 2019 в 00:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: