Остановить генератор

Функция генерирует определённую последовательность чисел в виде списка списков. Вопрос, как остановить этот генератор, когда длинна основного списка будет больше двух.

def subset_sum(numbers, target, partial=[], partial_sum=0):

    s = [i**2 for i in partial]

    if sum(s) == target**2:
        yield partial
    if sum(s) >= target**2:
        return None
    for i, n in enumerate(numbers):
        remaining = numbers[i + 1:]
        yield from subset_sum(remaining, target, partial + [n], partial_sum + n)

print(list(subset_sum(range(50, 0, -1),50)))

Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

itertools.islice решает нужную задачу:

import itertools


def subset_sum(numbers, target, partial=[], partial_sum=0):
    ...


print(list(itertools.islice(subset_sum(range(50, 0, -1), 50), 2)))
$ python subset_sum.py 
[[50], [49, 8, 5, 3, 1]]
→ Ссылка