2013-10-04 1 views
9

Quando utilizzo la funzione bisect_left(), perché non si ottiene index dell'elemento, ma invece index + 1?Bisetto di un elenco Python e ricerca dell'indice

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 

risposta

19

bisect.bisect() è un nome più breve per bisect.bisect_right(), nonbisect.bisect_left().

Avrete bisogno di usare il nome completo, bisect.bisect_left(), invece:

>>> 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