python迭代器相关方法

本文详细介绍了Python中的迭代器和生成器。通过`iter()`函数获取迭代器,`next()`方法执行迭代,演示了字典、列表等可迭代对象的迭代过程。同时,讲解了迭代器生成式和`yield`关键字的应用,展示了如何创建自定义迭代器,并利用`StopIteration`异常控制迭代结束。文章还提供了实例代码帮助理解这些概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iter、next

首先最主要的有两个方法,生成迭代器iter(),执行迭代next()。iter生成迭代器会记下每次执行后的位置,而next会根据此位置继续执行

凡是可迭代对象,如字典、列表、元组、字符串···都可以使用iter来生成迭代器,其返回类型为iteration。其中,若对字典进行iter,则会将其键生成迭代器,如下:

In [16]: dic={'a':1,'b':2,'c':3}
In [17]: A=iter(dic)
In [18]: type(A)
Out[18]: dict_keyiterator

In [19]: next(A)
Out[19]: 'a'

In [21]: next(A)
Out[21]: 'b'

In [22]: next(A)
Out[22]: 'c'

也可以用循环体对迭代对象进行输出

In [24]: dic={'a':1,'b':2,'c':3}

In [25]: B=iter(dic)

In [26]: for i in B:
    ...:     print(i)
    ...:
a
b
c

迭代器生成式

In [27]: C=(i for i in [1,2,3,4,5,6])

In [28]: type(C)
Out[28]: generator

In [29]: next(C)
Out[29]: 1

In [30]: next(C)
Out[30]: 2

类似列表生成式,只需将[]换为()即可

魔术方法及stopinteration

为了防止迭代对象一直进行迭代,可以使用stopinteration来终止迭代

class Interation():
    def __iter__(self):
        self.a=0
        return self
    def __next__(self):
        if self.a<5:
            self.a+=1
            return self.a
        else:
            raise StopIteration

A=Interation()
print(A)
B=iter(A)
print(B)
while True:
    print(next(B))
<__main__.Interation object at 0x0000020953D2C910>
<__main__.Interation object at 0x0000020953D2C910>
1
2
3
4
5

yeild

在函数中,将return修改为yeild,也可生成一个迭代对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值