python :迭代器,生成器,枚举

1:迭代器

li = [5,6,7]

it=iter(li)

 

print(it)

print(it.__next__())

print(it.__next__())

print(it.__next__())

 

执行结果:

 

迭代的另一种使用方法:

#encoding=utf-8

li=[5,6,7]

it=iter(li)

print(it)

print(next(it))

print(next(it))

print(next(it))

print(next(it))

 

输出结果:

 

 

迭代习题:输出是0,10,20

#encoding=utf-8

class MyRange():

    def __init__(self,n):

        self.idx = 0

        self.n = n

 

    def __iter__(self):

        return self

 

    def __next__(self):

        if self.idx <self.n:

            val = self.idx

            self.idx += 10

            return val

        else:

            raise StopIteration()

 

myRange = MyRange(30)

print(next(myRange))

print(next(myRange))

print(next(myRange))

 

输出结果:

 

__iter__()和__next()__方法

这两个方法是迭代器最基本的方法

一个用来获取迭代对象

一个用来获取容器中的下一个元素

 

2:生成器

在python中一边循环一边计算的机制,称为生成器

示例:

>>> L=[x*x for x in range(10)]

>>> print(L)

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

>>> g=(x*x for x in range(10))

>>> print(g)

<generator object <genexpr> at 0x0000000002D6F0D8>

>>> print(g)

<generator object <genexpr> at 0x0000000002D6F0D8>

>>> print(next(g))

0

>>> print(next(g))

1

>>> print(next(g))

4

>>> print(next(g))

9

>>> print(next(g))

16

>>> for n in g:

...     print(n)

...

25

36

49

64

81

>>>

 

示例2

def odd():

    print('step 1')

    yield 1

 

    print('step 2')

    yield 3

 

    print('step 3')

    yield 5

 

o =odd()

print(next(o))

print(next(o))

print(next(o))

print(next(o))

 

输出结果:

 

 

3:枚举

>>> for i ,value in enumerate(['A','B','C']):

...     print(i,value)

...

0 A

1 B

2 C

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值