七叔详解 python 中的迭代操作和迭代器、生成器的区别

本文深入解析Python中的迭代操作,包括可迭代对象、for循环的工作原理、迭代器协议和迭代器。接着介绍了生成器的概念,强调其在节省内存方面的优势,并通过生成器表达式和生成器函数展示了生成器的用法。最后,对比了迭代器和生成器的区别,如类型、数据存储方式以及额外的方法。

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

前言

小伙伴们迭代器和生成器是 python 面试的时候,被问概率较高的一个知识点,很多小伙伴都不太分得清这两者的区别,今天就来给大家详细的讲解迭代器和生成器的区别。

一、可迭代对象

在讲解迭代器和生成器之前,我们得先说说可迭代对象,所谓的可迭代对象就是能够通过 for 循环迭代,逐一返回其成员项的对象称为可迭代对象, python 中可迭代对象包括

  • 1、所有序列类型 :如 list、 str 和 tuple、range
  • 2、非序列类型: dict、set、文件对象
  • 3、实现了 __iter__() 方法的任意对象
  • 4、实现了序列语义的 __getitem__() 方法的任意对象。

二、for 循环迭代到底干了啥?

1、 __iter__() 方法

  

__iter__() 在 python 中也被称作迭代协议,只要对象拥有 __iter__() 方法,那么该对象就实现了迭代协议,就可以进行迭代操作。

另外 __iter__() 方法的返回值,必须是一个迭代器(迭代器下章详细讲解)。

python 中的 list、str、tuple、dict、set 等类型都实现了 __iter__() (迭代协议),所以能够直接进行遍历。

当我们用 for 去遍历任何一个对象时,for 循环执行的时候,会先去调用对象的 __iter__(),根据 __iter__() 返回的迭代器,再进行迭代操作。

下面是我自己定义的一个实现 __iter__() 方法,可迭代对象的类

  class 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值