gpt4 book ai didi

python - 在 Django 中生成给定查询集的所有可能子集

转载 作者:太空宇宙 更新时间:2023-11-04 11:04:24 25 4
gpt4 key购买 nike

这只是一个示例,但给出了以下模型:

class Foo(models.model):
bar = models.IntegerField()

def __str__(self):
return str(self.bar)

def __unicode__(self):
return str(self.bar)

以及以下QuerySet对象:

foobar = Foo.objects.filter(bar__lt=20).distinct()

(意思是,一组独特的 Foo 模型与 bar <= 20 ),我如何生成 foobar 的所有可能子集? ?理想情况下,我想进一步限制子集,以便对于每个子集 xfoobar , 所有 f.bar 的总和在 x (其中 f 是类型为 Foo 的模型)介于某个最大值和最小值之间。

因此,例如,给定以下 foobar 的实例:

>> print foobar
[<Foo: 5>, <Foo: 10>, <Foo: 15>]

min=5 , max=25 ,我想构建一个如下所示的对象(最好是 QuerySet,但可能是一个列表):

[[<Foo: 5>], [<Foo: 10>], [<Foo: 15>], [<Foo: 5>, <Foo: 10>],
[<Foo: 5>, <Foo: 15>], [<Foo: 10>, <Foo: 15>]]

我试验过 itertools但它似乎并不是特别适合我的需要。

认为这可以用复杂的 QuerySet 来完成但我不确定如何开始。

最佳答案

S = [list(itertools.combinations(foobar,i)) for i in xrange(1, len(foobar))]

它产生非平面列表。您可以通过以下方式将其展平:

list(itertools.chain.from_iterable(S))

关于python - 在 Django 中生成给定查询集的所有可能子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2618641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com