例如,我正在试图找出如何在元组列表中使用二分法
[(3, 1), (2, 2), (5, 6)]如何根据每个元组中的1对此列表进行平分?
list_dict [(69, 8), (70, 8), ((65, 67), 6)]
tup1,tup2 (69, 8) (70, 8)
list_dict [((65, 67), 6)]
fst, snd ((65, 67),) (6,)我要插入到二分
idx = bisect.bisect(fst, tup1[1]+tup2[1])这给了我unorderable types: int() < tuple()
发布于 2014-01-03 16:23:14
您可以将值分离成单独的列表。
from bisect import bisect
data = [(3, 1), (2, 2), (5, 6)]
fst, snd = zip(*data)
idx = bisect(fst, 2)但是请注意,要使bisect工作,您的数据确实应该被排序.
发布于 2015-08-03 04:05:44
在某些情况下,只是简单的
bisect(list_of_tuples, (3, None))就够了。
因为None比任何整数都要小,所以这将给出以至少3开头的第一个元组的索引,或者如果它们都小于3时则给出len(list_of_tuples)。注意,list_of_tuples是排序的。
发布于 2014-01-03 17:30:32
检查文档的底部:http://docs.python.org/3/library/bisect.html。如果您想要与元素本身相比,您应该创建一个单独的所谓键列表。在您的示例中,只包含一个元组的In列表。使用第二个列表来用二分法计算索引。然后使用它将元素插入原始元素(元组列表),并将键(元组中的一个)插入到新的键列表(ints列表)中。
https://stackoverflow.com/questions/20908047
复制相似问题