Python(9):迭代器和生成器

本文深入探讨Python中的迭代器和生成器概念,包括如何使用iter()和next()函数,自定义迭代器的方法,以及如何利用yield关键字创建生成器。通过实例演示,帮助读者理解迭代器和生成器在Python编程中的应用。

迭代器

迭代器是python最强功能之一,是访问元素的一种方式
迭代器是可以记住遍历的位置和对象
迭代器是从序列的第一个元素开始遍历
有两个基本的函数:iter() 、next()

iter函数

把一个序列变化成迭代器对象

# 1.iter

print('-------1.iter----------')
list = [1, 3, 4, 5, 53]
it = iter(list)
for x in it:
    print(x, end=' ')
print('\n ')

打印:

1 3 4 5 53 

next函数

next()是取迭代器的数据,从第一个数据开始访问
例子:

print('-------2.next try except  stopIteration')
import sys   #引入 sys模块
list = [2, 3, 4, 87]
it = iter(list)

while True:
    try:
        print(next(it))
    except StopIteration:
        sys.exit()

创建一个迭代器-自定义

自定义一个迭代器,需要实现__iter__()和__next__()这两个函数

class MyIteration:
    def __iter__(self):
        self.a = 1
        return self

    def __next__(self):
        if self.a <= 20:
            x = self.a
            self.a += 1
            return x
        else:
            raise StopIteration

        return x


myclass = MyIteration()
myiter = iter(myclass)

print(next(myiter))
print(next(myiter))
print('---for 打印---')
for x in myiter:
    print(x)

打印:

-------3.创建一个迭代器---------
1
2
---for 打印---
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

生成器

python中有个关键字yield是用来生成迭代器

print('-------4.yield生成器-------')
import sys


def fibonacci(n):  # 生成器函数 -斐波那契数列
    a, b, count = 0, 1, 0
    while True:
        if (count > n):
            return
        yield a
        a, b = b, a + b
        count += 1


f = fibonacci(12)  # f是一个迭代器,由生成器生成
while True:
    try:
        print(next(f), end=' ')
    except StopIteration:
        sys.exit()

打印:

-------4.yield生成器-------
0 1 1 2 3 5 8 13 21 34 55 89 144 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值