【问题标题】:How to write a key function for bisect.bisect_left that compares both the index of two arrays?如何为 bisect.bisect_left 编写比较两个数组索引的关键函数?
【发布时间】:2023-02-03 11:01:23
【问题描述】:

我想为 bisect.bisect_left 编写一个关键函数,我的目标是比较两个列表,仅当一个列表的两个元素都小于或等于另一个列表的元素时,才称一个列表小于另一个列表。

只有当x1 <= x2 and y1 <= y2 时,[x1, y1] 才应放在[x2, y2] 之前。

我的目标是找出一个坐标为 (x,y) 的点在已排序的矩形列表中的位置(每个元素为(长度和宽度),以便计算该点可能落入的矩形数。

一个点可能无法放置在任何此类索引处。

【问题讨论】:

  • “只有当 x1 <= x2 和 y1 <= y2 时,[x1,y1] 才应该放在 [x2,y2] 之前” - 所以,只有当 x2 <= 时,大概 [x2,y2] 应该放在 [x1,y1] 之前x1 和 y2 <= y1。如果会发生什么两者都不条件是真的吗?您的规则根本不允许将两个这样的元素放在同一个列表中。

标签: python-3.x binary-search bisect


【解决方案1】:

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

def compare(list1, list2):
    return all(a <= b for a, b in zip(list1, list2))


print(compare([1, 2], [1, 2]))
print(compare([1, 3], [1, 2]))
print(compare([3, 3], [1, 2]))

这应该打印

True
False
False

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 2015-09-03
    • 2010-09-24
    相关资源
    最近更新 更多