Умножение целых чисел в каждом возможном подмножестве последовательного списка целых чисел - PullRequest
0 голосов
/ 24 августа 2018

У меня есть следующий список целых чисел:

prime_factors = [2,3,5,7,11,13,17,19,23]

Каким был бы эффективный способ умножения элементов каждого подмножества последовательных целых чисел?

Чтобы уточнить далее, мне нужно, чтобы выходные данные включали результаты следующих умножений: 2*3, 3*5, 2*3*5, 13*17*19, 7*11*13*17*19, 2*3*5*7*11*13*17*19*23 и всех другихвозможные комбинации последовательных простых чисел.Вывод НЕ должен включать 2*5 или 5*7*13 и т. Д.

1 Ответ

0 голосов
/ 24 августа 2018

Вы можете сделать это, используя itertools.accumulate.

from itertools import accumulate
from operator import mul

def consec_mult(data):
    for i in range(len(data) - 1):
        it = accumulate(data[i:], mul)
        # Skip the single item
        next(it)
        yield from it

# Test

prime_factors = [2, 3, 5, 7, 11]
print(*consec_mult(prime_factors))

выход

6 30 210 2310 15 105 1155 35 385 77

Или, если вы хотите, чтобы результаты сортировались в числовом порядке:

print(*sorted(consec_mult(prime_factors)))

выход

6 15 30 35 77 105 210 385 1155 2310
...