Python列表的二分和查找索引

14

当我使用 bisect_left() 函数时,为什么我得到的不是元素的 index,而是 index + 1

import bisect

t3 = ['carver', 'carvers', 'carves', 'carving', 'carvings']
print bisect.bisect(t3, 'carves')    # 3
print bisect.bisect(t3, 'carving')   # 4
print bisect.bisect(t3, 'carver')    # 1
1个回答

27

bisect.bisect()bisect.bisect_right() 的缩写,不是 bisect.bisect_left()

您需要使用完整名称 bisect.bisect_left()

>>> import bisect
>>> t3 = ['carver', 'carvers', 'carves', 'carving', 'carvings']
>>> bisect.bisect(t3, 'carves')
3
>>> bisect.bisect_left(t3, 'carves')
2
>>> bisect.bisect == bisect.bisect_right
True
>>> bisect.bisect == bisect.bisect_left
False

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接