Issue #23086: Add start and stop arguments to the Sequence.index() mixin method.

This commit is contained in:
Raymond Hettinger 2015-05-22 19:29:22 -07:00
parent 256613c605
commit ec219ba1c0
5 changed files with 69 additions and 5 deletions

View file

@ -825,13 +825,23 @@ class Sequence(Sized, Iterable, Container):
for i in reversed(range(len(self))):
yield self[i]
def index(self, value):
'''S.index(value) -> integer -- return first index of value.
def index(self, value, start=0, stop=None):
'''S.index(value, [start, [stop]]) -> integer -- return first index of value.
Raises ValueError if the value is not present.
'''
for i, v in enumerate(self):
if v == value:
return i
if start is not None and start < 0:
start = max(len(self) + start, 0)
if stop is not None and stop < 0:
stop += len(self)
i = start
while stop is None or i < stop:
try:
if self[i] == value:
return i
except IndexError:
break
i += 1
raise ValueError
def count(self, value):