二维数组元素比较算法

2024-09-27 21:30:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为一家销售iPhone配件的公司创建Python程序。程序将有一个函数,它接受一个列表列表作为参数,其中每个列表元素包含两个描述产品的值——价格和估计质量(整数值)。我想找一个价格比另一件低但质量比另一件高的例子。例如,我将把这个列表传递给我的函数:

some_inventory = [[11.95, 10], [7.95, 12], [6.50, 3],...]

在这个列表中,元素[7.95,12]将比[11.95,10]具有更低的价格和更高的质量。如果这种情况存在,我想返回一个布尔值,如good\u deal=True。你知道吗

在一些目录中,大约有十万个这样的列表元素。我可以使用蛮力的方法来比较每个价格与所有其他价格,然后检查他们的质量对对方,但这是非常缓慢的。我试着先按价格排序,对于价格相同的项目,我会剔除质量较低的项目,只将质量最高的项目添加到新列表中(例如,如果有带有[4.50,2]、[4.50,5]、[4.50,8]的项目,我只将[4.50,8]添加到新列表中)。但这似乎还是太费时了。你知道吗

有没有更有效的算法来做这些比较?它不必在Python、伪代码或C/C++中都是好的。你知道吗


Tags: 项目函数程序元素列表参数产品质量
1条回答
网友
1楼 · 发布于 2024-09-27 21:30:35
def has_good_deal(deals):
    return sorted(deals) != sorted(deals, key=lambda x: list(reversed(x)))

表达式的左侧按价格对交易进行排序,如果价格相等,则按质量对交易进行排序。表达式的右侧按质量对交易进行排序,如果质量相等,则按价格对交易进行排序。你知道吗

如果排序不相等,那么至少有两个交易[p1, q1][p2, q2]交换了位置。如果他们交换了位置,p1<p2q1>q2,这意味着[p1, q1][p2, q2]更划算。如果种类相等,那就没有什么好交易。你知道吗

相关问题 更多 >

    热门问题