def gen(ps):
    items = ((x,) for x in sorted(ps, reverse=True))
pq = [(prob(x), x) for x in items]
Алгоритм получения всех возможных подмножеств списка в порядке их произведения без построения и сортировки всего списка (т.е. генераторов)