Как сделать, чтобы Python 3.x Powerset Generator имел условия перед генерацией наборов?

Я начинающий программист, который хочет создать набор для списка чисел различного размера (как правило, не менее 150). Код, который у меня есть, работает для небольших списков чисел, но не тогда, когда я заменяю [4,5,6] на мой большой список.

def powerset(s):
    x = len(s)
    masks = [1 << i for i in range(x)]
    for i in range(1 << x):
        yield [ss for mask, ss in zip(masks, s) if i & mask]

print(list(powerset([4, 5, 6])))

#this prints: [[], [4], [5], [4, 5], [6], [4, 6], [5, 6], [4, 5, 6]]

(Это не домашний вопрос, это часть более крупного кода, который я пишу). Любая помощь очень важна, и имейте в виду, что я программирую всего несколько месяцев. Спасибо!

Редактировать!: Теперь я понимаю (спасибо вам комментарии), что это привело бы к смехотворно большому списку. Новый вопрос: есть ли способ отсортировать набор параметров перед его генерацией. Например, вместо того, чтобы избавляться от каких-либо наборов, которые он производит с числом, меньшим определенного числа, после запуска генератора, существует способ сделать это так, чтобы генератор не создавал списки с определенными характеристиками (размер, конкретное число и т. Д.).) Таким образом, он будет производить значительно меньшее количество наборов, и у меня не будет проблем с хранилищем, которые есть сейчас.

0 ответов

Другие вопросы по тегам