【发布时间】:2020-03-23 16:10:13
【问题描述】:
我有一个整数范围,例如
big_list = [1, 2, ..., 100]
我需要找到这个范围内所有固定长度的数字子集,对于 k=5,它们的平均值在 50 以内(如 45-55)。例如我们的固定大小为 6,平均约为 50
sample = [71, 20, 23, 99, 25, 60]
问题是列表必须是唯一的,不能有重复的数字。
顺序无关紧要,因此 [71, 20, 23, 99, 25, 60] 和 [20, 71, 23, 99, 25, 60] 只是一种组合。
我正在考虑仅使用 itertools 生成所有组合并根据我的标准过滤掉。但是运行时间会很糟糕,因为大的数字列表可能从 10 到 400 不等。
如何根据上述条件生成一组列表
【问题讨论】:
-
如果你的列表是随机数列表还是数字序列?该示例使其看起来像 1 - 100。
-
就我而言,这是一个序列(如果这样可以让事情变得更快),抱歉没有澄清。
-
什么算作“大约 50”?究竟是 45-55,还是只是“喜欢”那个范围?
-
理想情况下尽可能接近 50,但最大距离应该是给定数字 (50) 的 +-5。我正在尝试在这种情况下生成尽可能多的数据,并且我打算在之后使用数据集后过滤掉
-
在大多数情况下,生成所有可能的组合然后过滤掉一些组合是不现实的,因为对于长列表来说组合的数量是巨大的。或许根据一些规则只生成“好的”组合会更好。
标签: python algorithm combinations