Python 二维数组中元素比较的算法

Python 二维数组中元素比较的算法,python,arrays,algorithm,Python,Arrays,Algorithm,我正在为一家销售iPhone配件的公司创建一个Python程序。程序将具有一个函数,该函数接受列表列表作为参数,其中每个列表元素包含两个描述产品的值——价格和估计质量(整数值)。我想找一种情况,一种商品的价格比另一种低,但质量比另一种高。例如,我将把这个列表传递给我的函数: some_inventory = [[11.95, 10], [7.95, 12], [6.50, 3],...] 在此列表中,元素[7.95,12]的价格和质量将低于[11.95,10]。如果这种情况存在,我想返回一个布

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

some_inventory = [[11.95, 10], [7.95, 12], [6.50, 3],...]
在此列表中,元素[7.95,12]的价格和质量将低于[11.95,10]。如果这种情况存在,我想返回一个布尔值,如good_deal=True

在一些清单中,大约有十万个这样的列表元素。我可以使用蛮力方法将每个价格与所有其他价格进行比较,然后检查彼此的质量,但这非常缓慢。我尝试先按价格排序,对于价格相同的项目,我会删除质量较低的项目,只将质量最高的项目添加到新列表中(例如,如果有带有[4.50,2]、[4.50,5]、[4.50,8]的项目,我只将[4.50,8]添加到新列表中)。但这似乎仍然太耗时

有没有更有效的算法来进行这些比较?它不必使用python,伪代码或C/C++也可以

def has_good_deal(deals):
    return sorted(deals) != sorted(deals, key=lambda x: list(reversed(x)))
表达式的左侧按价格对交易进行排序,如果价格相等,则按质量对交易进行排序。表达式的右侧根据交易的质量对交易进行排序,如果质量相同,则根据价格对交易进行排序


如果排序不相等,则至少有两个交易已交换位置。如果他们交换了位置,
p1q2
,这意味着与
[p2,q2]
相比,
[p1,q1]
是一笔不错的交易。如果排序相等,那么就没有什么好交易。

你能更具体地说明你希望这个算法做什么吗?它的行为如何?它将返回什么?@mathguy54如果存在这样的情况,即一种产品比另一种产品便宜,但质量更高,我只希望程序返回一个布尔值,如good_deal=True。因此,good_deal在开始时会被设置为默认值False。首先按质量排序,然后与最低价格断开联系。那么,您是否会传入产品的统计数据,如
[7.80,11]
,您的算法将显示某些库存中是否存在价格较低但质量较高的产品?如果您愿意的话,请在您的规范中明确和详细。@padraic cunningham这不会给我与按价格先排序然后按质量排序相同的算法运行时间吗?我想OP是想找出哪些交易是好交易,而不是列表中是否有好交易。@Mephy OP说,“我只是想让程序返回一个布尔值。”.这很有效!我刚刚定了一个好交易。你能再解释一下你是怎么得到这个的吗?我知道在返回表达式的左侧,您只是在对交易进行排序(我假设是按价格),但在右侧排序的是什么?@MNRC口译员是您的朋友,请尝试一下,它通常比阅读解释更容易理解!你只能键入表达式的一部分来找出部分结果。好吧,我想我理解你的代码及其背后的推理,但我自己在一百万年内永远也不会想出这个解决方案:P。谢谢。关于右边的list()函数,它是做什么的?我以为它只是把一个字符串分解成一个列表?质量值不是已经在列表中了吗?