例子很简单:
for i, v in enumerate(['tic', 'tac', 'toe']):
print i,v
在enumerate里面我们可以放置一个iterable的对象,这样的对象可以是a sequence, an iterator, or some other object which supports iteration。在Python doc 里面看到这样的解释之后我便尝试自己实现一个iterable的对象。实现如下:
class Enumerable:
def __init__(self):
self.value = 1
def __iter__(self):
return self
def next(self):
if (self.value > 10):
raise StopIteration
else:
self.value += 1
return self.value
enum = Enumerable()
for i, v in enumerate(enum):
print i, v
只需要实现__iter__和next接口就可以了
enumerate( iterable)
Return an enumerate object. iterable must be a sequence, an iterator, or some other object which supports iteration. The next() method of the iterator returned by enumerate() returns a tuple containing a count (from zero) and the corresponding value obtained from iterating over iterable. enumerate() is useful for obtaining an indexed series: (0, seq[0]), (1, seq[1]), (2, seq[2]), .... New in version 2.3.
A new built-in function, enumerate(), will make certain loops a bit clearer. enumerate(thing), where thing is either an iterator or a sequence, returns a iterator that will return (0, thing[0]), (1, thing[1]), (2, thing[2]), and so forth.
A common idiom to change every element of a list looks like this:
for i in range(len(L)):
item = L[i]
# ... compute some result based on item ...
L[i] = result
This can be rewritten using enumerate() as:
for i, item in enumerate(L):
# ... compute some result based on item ...
L[i] = result
转自:http://taoyh163.blog.163.com/blog/static/195803562008196235218/