python-3.x 如何为bisect.bisect_left写一个键函数来比较两个数组的索引?

pod7payv  于 2023-02-06  发布在  Python
关注(0)|答案(1)|浏览(144)

我想为bisect.bisect_left写一个关键函数,我的目标是比较两个列表,只有当一个列表的两个元素都小于或等于另一个列表的元素时,才调用一个比另一个小的列表。
仅当x1 <= x2 and y1 <= y2时,才应将[x1, y1]放在[x2, y2]之前。
我的目标是找出坐标为(x,y)的点在排序后的矩形列表中的位置(每个元素为(length and widthness)),以便计算该点可能落入的矩形的数量。
可能无法将点放置在任何此类索引处。

ovfsdjhp

ovfsdjhp1#

可以使用生成器表达式,通过zip并行迭代两个列表:

import bisect

class ComparableList:
    def __init__(self, x):
        self.list = x

    def __lt__(self, other):
        return all(x <= y for x, y in zip(self.list, other.list if isinstance(other, ComparableList) else other))

original_list = [[1, 1], [1, 2], [3, 3], [3, 4]]
insertion = [2, 2]

print(bisect.bisect_left(original_list, insertion, key=lambda x: ComparableList(x)))

这应该打印

2

相关问题