python:算法-从平均值中收集项目
不确定这是否是正确的位置,但我有一个关于算法的问题,我想不出一个有效的算法。 所以我想分享我的问题陈述:) 为了简化我试图解释的内容,让我创建一个假设的示例 假设,我有一个列表,其中包含一个对象,其中包含两件事python:算法-从平均值中收集项目,python,algorithm,Python,Algorithm,不确定这是否是正确的位置,但我有一个关于算法的问题,我想不出一个有效的算法。 所以我想分享我的问题陈述:) 为了简化我试图解释的内容,让我创建一个假设的示例 假设,我有一个列表,其中包含一个对象,其中包含两件事 lets say product id and price 现在,这是一个很长的列表…有点像一个库存。。 在此基础上,我定义了三个价格段。。低、中、高价 然后是k1,k2,k3,其中k1,k2和k3是比率。 所以,现在的工作是,,,我必须从这个庞大的库存中收集产品,以这样的方式,低价位
lets say product id and price
现在,这是一个很长的列表…有点像一个库存。。
在此基础上,我定义了三个价格段。。低、中、高价
然后是k1,k2,k3,其中k1,k2和k3是比率。
所以,现在的工作是,,,我必须从这个庞大的库存中收集产品,以这样的方式,低价位的产品有n1,中价位的产品有n2,高价位的产品有n3。。。式中n1:n2:n3==k1:k2:k3
现在,我如何有效地实现以下目标。
我的目标低价是100美元
我必须从这个系列中收集20种产品。。
中等价位大概是500美元
等等
所以我从100美元开始。。然后查找介于90和100之间以及介于100和110之间的项目
假设我发现区间1低(90100)有5种产品,区间1高(100110)有2种产品
然后,我转到下一个低间隔和下一个高间隔。
我一直这样做,直到我得到这个时间间隔内的产品数量
我该怎么做??还有一种情况,当特定价格范围内的产品数量少于我需要的数量时。。(也许中等价位是105美元…)。。那么在这种情况下我该怎么办。。
如果这不是正确的站台,请原谅。。从这个问题你可以看出,这更像是一个有争议的问题,而不是“我犯了这个错误”类型的问题。
谢谢似乎您应该尝试数据库解决方案,而不是使用列表。查看sqlite。默认情况下,它是Python的,您可能正在寻找它。
首先找到
n1
的第四个最小元素,让它成为e1
,并且下限列表是所有元素,使得元素接近1
如果分配哪些产品属于三个价格段从未改变,为什么不简单地建立三个列表,每个价格段中的一个产品列表(假设这些集合是不相交的)。
然后,您可以从这些列表中随机选择(根据您的喜好)。每个类别的项目数由比率给出
方法2
如果产品价格段分配是预先指定的,例如,通过在函数调用中传递每个段的相应价格值,您可能希望按价格对产品进行排序,并使用二进制搜索来选择(例如)。可以根据比率指定参数m
。如果指定了最大距离,则可能会拒绝超出所需价格范围的产品
方法3
如果需要自动确定产品价格段分配,您可以应用您选择的算法,例如,将您的产品分配给,例如,k=3
价格段。对于实际的产品选择,您可以如上所述进行类似操作。如果您对项目N进行排序,然后根据比率,将N分别划分为n1:n2:n3,会更容易吗?@AlvinK。隐马尔可夫模型。。这可能是一个解决方案,尽管我无法真正使用我计算的一些统计数据。。但这绝对是一个非常棒的例子,说明了一点小小的假设是如何使编程变得简单的:)
getLowerRange(list,n):
e <- select(list,n)
result <- []
for each element in list:
if element <= e:
result.append(element)
return result