0

我读了这个关于如何在元组列表上使用 bisect 的问题,并且只比较元组的第一个值。它有效,但我如何比较两个值?如果 x 的索引 < y 的索引并且 y[0] <= x[0] 或 y[1] <= x[1],则 bisect.bisect_left 返回类似的索引

input:[(2, 2), (3, 1), (5, 6)]
bisect.bisect_left(input, (2, 3)) => 0
bisect.bisect_left(input, (3, 4)) => 1
bisect.bisect_left(input, (5, 5)) => 2
4

1 回答 1

1

Bisect 需要一个排序列表。如果排序顺序与元组条目之间的比较结果匹配,它将正确处理元组。

这对应于x[0]<y[0] or x[0]==y[0] and x[1]<y[1]

由于您不能同时对两个值的元组进行排序,因此不可能获得y[0] <= x[0] or y[1] <= x[1]二分结果。即使某些数据组合允许排序,元组 (a,b) 总是有可能在列表中有两个索引,这构成了一个模棱两可的结果。

于 2019-08-05T18:36:31.130 回答