Python里的enumerate

刚刚看了一下Python里面的enumerate的部分, enumerate每次回返回一个tuple:(index, value)

例子很简单:

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/



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值